2009-02-10 22 views
2

我有EJB的企業應用程序。該應用程序的總大小是34兆。 當我部署我的應用程序時,一切都很好,但是當我重新部署它時,總負載類的數量會增加。我正在使用visualVM來查看此信息。 所以它應該如何或它是一個內存泄漏。如何解決這個問題呢? 謝謝Glassfish中加載的類的總數

回答

6

你有一個類加載器泄漏!

通常會發現,當您在任何 JavaEE應用服務器(包括Glassfish)上部署應用程序時,應用程序服務器將爲您的應用程序創建一個新的類加載器。當你的應用程序被初始化並且運行時,該類加載器將加載新的類,這些類將被放入永久內存中,稱爲PermGen區域。

當應用程序被取消部署時,該類加載器應該被垃圾收集,但有時不會發生這種情況,因爲導致引用持久存在。當您的應用程序重新部署時,應用程序服務器會像以前一樣運行相同的動作,但現在,可用內存較少。

欲瞭解更多信息,請看Frank Kieviet的博客文章Classloader Leaks和後續How to Fix Classloader Leaks