2016-02-18 57 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正确。 –