是否有工具来分析大型Java堆转储而不加载完整的hprof文件?

Mar*_*ark 8 java heap profiling

我使用Eclipse MAT来分析hprof文件.这是非常好的但是如果你有2Gb堆转储,那么你需要运行具有2Gb +堆大小的MAT本身才能加载完整的堆转储.

我想知道是否有人知道一个工具可以分析2Gb hprof文件而不使用那么多的内存本身(例如它不加载完整的文件,但不知何故走过它)?如果在客户服务器上生成hprof文件,这将非常有用,因为我可以在服务器上运行某些分析,而不是尝试通过VPN复制2Gb文件.

ank*_*kon 4

hprof 文件的格式如果不完全加载并随后应用一些交叉引用,则无法正常工作。

但是,您可以使用JDK 包中包含的jmapjstack和来跳过 hprof 转储,仅从正在运行的 VM 获取基本信息。visualvm例如,典型的内存泄漏应该已经从 jmap 堆直方图中可见,因为您只需查看特定类的实例数量就可以猜测生成或保留对象的位置。