JAXBContext.newInstance 内存泄漏

发布于 2024-09-16 03:27:52 字数 379 浏览 6 评论 0 原文

最近的一次系统测试部署后,我们的一个 servlet 受到的打击比平时严重得多,我们注意到内存开始攀升,weblogic 最终会死掉。 我非常自豪的是,我的实习生发现了内存泄漏的根源。

每当收到请求时,都会调用此行:

JAXBContext jc = JAXBContext.newInstance(“ruby.oracle_servlet.schemas”);

由于某种原因,该对象永远不会被垃圾收集。 一旦我们将其设为静态并移动到初始化它的位置,内存泄漏就消失了。

我们的另一位开发人员将该行放入独立 java 应用程序的 while 循环中,也看到内存不断增加。

有谁知道为什么该对象没有被垃圾收集?

谢谢

After a recent deployment in system test, one of our servlets was getting hit much harder than usual and we noticed memory started climbing and weblogic would eventually die.
My intern, I was very proud, discovered the source of the memory leak.

Whenever a request comes in, this line gets called:

JAXBContext jc = JAXBContext.newInstance(“ruby.oracle_servlet.schemas”);

For some reason, the object never gets garbage collected.
Once we made it static and moved where we initialized it, our memory leak went away.

Another one of our developers put just that line in a while loop in standalone java application and also saw the memory creep up and up.

Does anyone have any ideas why that object doesn't get garbage collected?

Thanks

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

↙温凉少女 2024-09-23 03:27:52
番薯 2024-09-23 03:27:52

是的,这是泄漏。每次调用此方法时,它将加载类“ruby.oracle_servlet.schemas”。

JAXBContext.newInstance(“ruby.oracle_servlet.schemas”)

Yes, it's a leak. It will load the class “ruby.oracle_servlet.schemas”, every time this method is called.

JAXBContext.newInstance(“ruby.oracle_servlet.schemas”)
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文