在系統測試中最近部署之後,我們的一個servlet受到的打擊比平常更加困難,我們注意到內存開始攀升,weblogic最終死亡。 我的實習生,我很自豪,發現了內存泄漏的根源。JAXBContext.newInstance內存泄露
每當一個請求時,此行被調用:
JAXBContext jc = JAXBContext.newInstance(「ruby.oracle_servlet.schemas」);
出於某種原因,該對象永遠不會被垃圾收集。 一旦我們將它設置爲靜態並移動到初始化位置,我們的內存泄漏就消失了。
我們的另一位開發人員在獨立的Java應用程序的while循環中放了這行代碼,同時也看到了內存的變化。
有沒有人有任何想法,爲什麼該對象不會被垃圾收集?
感謝
鏈接更新:http://jaxb.java.net/guide/Performance_and_thread_safety.html – 2012-05-22 18:35:42
@ThangPham - 謝謝,我已經更新了我與您所提供的新的鏈接的答案。 – 2012-05-22 18:45:03
這是JAXB for Java 7發佈時的一個已知問題嗎?您提供的解決方案仍然存在,但很高興知道這是否仍然需要積極關注。 – 2013-10-14 20:14:05