【问题标题】:Total allocation of a java program一个java程序的总分配
【发布时间】:2016-05-31 02:43:07
【问题描述】:

我试图弄清楚 java 程序分配了多少内存,我相信 JVM 没有为此提供选项。

我错了吗?

所以我正在使用选项运行我的程序

-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

我想知道“总计”旁边的值是否是我正在寻找的。

如果是,“使用”旁边的值是什么?

提前致谢

【问题讨论】:

    标签: java memory-management jvm heap-memory allocation


    【解决方案1】:

    “已使用”旁边的数字是总数中已使用的数量。要计算分配的数量,您可以将已释放的数量加上已使用数量的差值相加。

    但是,使用诸如飞行记录器或 VisualVM 之类的内存分析器是一种更容易分析内存使用情况及其原因的方法。

    【讨论】:

    • 所以“used”字段有多少字节在执行结束时没有被收集,也就是还有多少内存被分配。对吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-02-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-07-22
    • 1970-01-01
    相关资源
    最近更新 更多