2014-11-24 91 views
0

我懷疑我的應用程序有內存泄漏。我有GC日誌,當我看到它們時,我發現內存使用量約爲9-10GB。然後我嘗試將內存轉儲到該文件,文件大小約爲5GB。JRockit的完全內存轉儲

的問題是,爲什麼轉儲沒有大小了9GB,但只有5GB?我如何強制jrcmd轉儲完整內存?

命令,我使用:

jrcmd 11906 hprofdump filename=/path_to_dump/dump.hprof 

JVM:

Java(TM) Platform, Standard Edition for Business (build 1.5.0_28-b04) 
Oracle JRockit(R) (build R28.1.3-11-141760-1.5.0_28-20110301-1432-linux-x86_64, compiled mode) 

更新:

的問題是,由於GC日誌內存空間還沒有釋放出來,以水平低於9GB 。將JDK工具截斷轉儲爲5GB。爲什麼?

回答

0

我認爲JRockit的行爲類似於熱點:如果你的實時數據集只有5 GB則轉儲也只有5 GB。我假設你的9-10只有5 GB是活的。

+0

但由於GC登錄我的記憶永遠不會被釋放低於9GB。爲什麼這些垃圾沒有被GC釋放,但被工具忽略了? – lbednaszynski 2014-11-24 15:08:38

+0

這些完整的GC還是增量GC?預計增量GC不能清除所有垃圾? – 2014-11-25 14:14:19

0

什麼是您的GC日誌是什麼樣子?

順便說一句,你有沒有試過被稱爲Memleak參考JRockit Mission控制工具?它可以用於查找內存泄漏。