出现内存不足错误时,HPROF 文件大小小于最大内存



我的 JVM 初始内存是 256 MB。最大内存为 512 MB。当我收到内存不足错误时,创建的HPROF文件大小小于200MB。(并非一直如此)(很难分析这个小的 HPROF 文件。因为 HPROF 中的所有对象只占用少量内存)

谁能说为什么?

提前致谢

如果堆的可用空间少于分配新对象所需的空间,则可能会出现内存不足错误。因此,即使 hprof 文件是内存的精确副本,它自然也会小于最大内存。但尽管如此,hpref 不是内存的精确副本,而是其状态的表示形式,就像线程转储不是 CPU 状态的精确副本一样,而是它的表示形式。

你如何分析 hprof 文件?某些工具不显示通过引用保存的内存量。

您应该使用性能分析软件(如 Eclipse Memory Analyzer)打开并分析 hprof 文件。在那里,您可以通过打开"支配者树"找到具有最多内存的引用的对象

最新更新