我在应用程序中遇到了臭名昭著的OutOfMemoryException,并且尝试查看问题所在,以防止应用程序存在某种泄漏。而不是简单地增加可用的堆空间量。我添加了JVM参数-XX:+HeapDumpOnOutOfMemoryError,当遇到OutOfMemory Error时会创建一个Heap Dump。然后,我使用不同的分析工具分析生成的转储文件。之后,我开始玩弄-Xmx参数并观察模式。
令我困惑的是以下内容。为什么在分析转储时,我发现所有对象的总大小要比我使用-Xmx参数设置的总大小小得多?
例如,假设我将-Xmx设置为'2048m'。当我分析转储文件时,在Heap上找到了400MB的对象总数。我原本期望找到2GB。我错过了什么吗?
令我困惑的是以下内容。为什么在分析转储时,我发现所有对象的总大小要比我使用-Xmx参数设置的总大小小得多?
例如,假设我将-Xmx设置为'2048m'。当我分析转储文件时,在Heap上找到了400MB的对象总数。我原本期望找到2GB。我错过了什么吗?