2016-02-18 53 views
3

我想弄清楚一個Java程序分配多少內存,我相信JVM不提供一個選項。一個Java程序的總分配

我錯了嗎?

所以我使用的選項

-XX:+PrintGCDetails -XX:+PrintGCDateStamps

現在爲止,我已經使用了G1GC收集器和併發標記和清除收集運行我的程序。

而對於收藏家我得到了以下成果:

Heap garbage-first heap total 27545600K, used 1882393K ... region size 4096K, 289 young (1183744K), 41 survivors (167936K) Metaspace used 3687K, capacity 4660K, committed 4864K, reserved 1056768K

Heap par new generation total 620544K, used 319848K ... eden space 551616K, 52% used ... from space 68928K, 40% used ... to space 68928K, 0% used ... concurrent mark-sweep generation total 1379008K, used 44914K [0x000000015fb90000, 0x00000001b3e40000, 0x0000000800000000) Metaspace used 3688K, capacity 4660K, committed 4864K, reserved 1056768K

不知該值旁邊的「合計」是我在找什麼。

如果是,那麼'use'旁邊的值是什麼?

在此先感謝

回答

2

「used」旁邊的數字是用於總數的數量。爲了確定分配的金額,您可以總計有多少已被釋放,再加上多少使用量的差異。

但是,使用類似飛行記錄器或VisualVM的內存分析器是分析內存使用情況和原因的更簡單的方法。

+0

因此,「used」字段在執行結束時沒有收集多少個字節,即仍分配了多少內存。正確? – franco

+1

@franco正確。 –