Lis*_*ssy 13 java memory-leaks java-metro-framework jaxb
在系统测试中最近部署之后,我们的一个servlet比平时受到更大的打击,我们注意到内存开始攀升,weblogic最终会死亡.我的实习生,我非常自豪,发现了内存泄漏的来源.
每当请求进入时,都会调用此行:
JAXBContext jc = JAXBContext.newInstance(“ruby.oracle_servlet.schemas”);
Run Code Online (Sandbox Code Playgroud)
出于某种原因,对象永远不会被垃圾收集.一旦我们将它静态化并移动到我们初始化它的位置,我们的内存泄漏便消失了.
我们的另一个开发人员在独立的Java应用程序中将该行放在while循环中,并且还看到了内存蠕变.
有没有人有任何想法为什么该对象不会被垃圾收集?
谢谢
您使用的是哪种JAXB实现和版本?如果您使用的是Java SE 6附带的参考实现,那么它就是Metro(https://jaxb.dev.java.net/).
以下是一些与内存相关的错误:
如果您碰巧使用MOXy实现(http://www.eclipse.org/eclipselink/moxy.php),那么我可以帮助调试.
好消息是JAXBContext是线程安全的,只能创建一次并重新使用.重用JAXBContext似乎也解决了你的内存泄漏问题.
有关更多信息,请参阅