我有一个6.5 64的Hprof文件,它是由64位JVM使用-XX:-HeapDumpOnOutOfMemoryError选项转储的。我把它放在一台16 64的64位机器上,并试图把它放到jhat中,但它总是内存不足。我曾尝试传入jvm args作为最小设置,但它拒绝任何最小值,并且似乎在达到最大值之前就耗尽了内存。
内存耗尽的jvm转储的堆如此之大,以至于无法将其加载到具有两倍ram的机器上,这似乎有些愚蠢。有没有什么方法可以让它运行起来,或者可能让分析摊销?
发布于 2009-12-03 05:58:56
我会看一下eclipse memory analyzer。这个工具很棒,我已经用这个工具查看了几个Gig堆。这个工具的好处是它在转储上创建了索引,所以它不会一次全部放在内存中。
发布于 2010-12-03 08:51:42
使用等同于jhat -J-d64 -J-mx16g myheap.hprof的命令来启动jhat,即,这将以64位模式启动jhat,最大堆大小为16 16。
如果您的平台上的JVM缺省为64位模式操作,那么-J-d64选项应该是不必要的。
发布于 2011-09-15 23:13:42
我必须加载一个11 GB的hprof文件,使用eclipse内存分析器无法加载。我最终做的是编写一个程序,通过随机删除实例信息来减小hprof文件的大小。一旦我将hprof文件的大小减小到1 1GB,我就可以用eclipse内存分析器打开它,并获得导致内存泄漏的原因的线索。
https://stackoverflow.com/questions/1835743
复制相似问题