jvm 将大型hprof加载到jhat

zaq34kh6  于 2022-11-07  发布在  其他
关注(0)|答案(4)|浏览(193)

我有一个6.5GB的Hprof文件,它是由一个64位JVM使用-XX:-HeapDumpOnOutOfMemoryError选项转储的。我把它放在一个16GB的64位机器上,并试图把它放入jhat,但它总是内存不足。我试着为最小设置传递jvm参数,但它拒绝任何最小值,似乎在达到最大值之前内存不足。
一个jvm耗尽内存转储一个如此之大的堆,以至于它不能被装载到一个有两倍内存的机器上,这看起来有点愚蠢。有什么方法可以让它运行,或者可能摊销分析吗?

6kkfgxo0

6kkfgxo01#

使用相当于jhat -J-d64 -J-mx16g myheap.hprof的命令来启动jhat,也就是说,这将在64位模式下启动jhat,最大堆大小为16 GB。
如果平台上的JVM默认为64位模式操作,则不需要-J-d64选项。

lxkprmvk

lxkprmvk2#

我会看一下eclipse memory analyzer。这个工具很棒,我已经看过几个Gig堆w/这个工具。这个工具的优点是它在转储上创建索引,所以它不会一次全部在内存中。

pn9klfpd

pn9klfpd3#

我不得不加载一个11 GB的hprof文件,而Eclipse内存分析器却不能。我最后做的是编写一个程序,通过随机删除示例信息来减少hprof文件的大小。一旦我把hprof文件的大小减少到1GB,我就可以用Eclipse内存分析器打开它,并获得导致内存泄漏的线索。

czfnxgou

czfnxgou4#

您传递给jhat的标志是什么?确保您处于64位模式,并且您设置的堆大小足够大。

相关问题