从 Java 转储计算 Xmx 设置和实际堆大小

Calculate Xmx setting and actual heap size from Java dump

我有一个由 Java 7 JVM 编写的堆转储文件 (java_dump.hprof)。

是否可以从该转储中计算 Xmx 命令行选项以及实际堆大小?

转储基于实际使用的大小,但格式不同,因此它可能更大。

如果转储是在 OutOfMemoryError 上触发的,则堆的大小将近似于所有转储对象的总大小将接近 Xmx。注意:如果创建一个非常大的对象触发了 OOME,则不会包括在内。

如果是用户触发的,你只知道最大值不小于转储的对象。