我想在應用程序中發現內存泄漏。這是一個在GlassFish 2上運行的Java EE應用程序,帶有Hibernate和Lucene。glassfish使用的內存vs堆轉儲
系統監視器告訴我GlassFish使用的內存大於4GB。但是當我在jprofiler中打開一個堆轉儲時,它告訴我只有大約600mb的分配空間。
你認爲我在做什麼是錯的?
你認爲有可能剩下的應該是垃圾收集的對象,並且gc有什麼問題嗎?我們處理大量數據,所以我確信在很短的時間內創建了很多對象。
我想在應用程序中發現內存泄漏。這是一個在GlassFish 2上運行的Java EE應用程序,帶有Hibernate和Lucene。glassfish使用的內存vs堆轉儲
系統監視器告訴我GlassFish使用的內存大於4GB。但是當我在jprofiler中打開一個堆轉儲時,它告訴我只有大約600mb的分配空間。
你認爲我在做什麼是錯的?
你認爲有可能剩下的應該是垃圾收集的對象,並且gc有什麼問題嗎?我們處理大量數據,所以我確信在很短的時間內創建了很多對象。
JProfiler
提到的600MB
是java的堆,它將根據需要擴展到最大堆空間。
通過系統監控中提到的4GB
是所有的應用程序(JVM,服務器等)
不,它不是。在開始時,它要少得多。 – 2013-05-12 11:52:56
@piotrek:不知道你的意思 – Jim 2013-05-12 12:01:40
我的意思是,當應用程序啓動它使用較少的內存。在這段時間內它正在增長。 – 2013-05-12 21:08:32
您可以使用所使用的內存[JVisualVM(http://visualvm.java.net/),看看內存究竟是怎麼分配(即當前堆大小vs分配的堆大小) – Cascader 2013-05-11 08:35:08
生產時會出現問題。我無法打開jmx和rmi的端口。所以我必須使用安裝在服務器上的工具,並且沒有X – 2013-05-12 21:10:54