JAXBContext.newInstance memory leak

在最近一次系统测试部署之后,我们的一个 servlet 受到的打击比平时大得多,我们注意到内存开始攀升,weblogic 最终会死掉。我的实习生,我很自豪,发现了记忆泄漏的来源。

每当有请求传入时,都会调用以下行:

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

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

我们的另一位开发人员在独立的java应用程序中将该行放在一个临时循环中,并且还看到内存逐渐上升。

有没有人知道为什么那个对象没有被垃圾收集?

谢谢


答案 2

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

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

推荐