是否有工具可以在不加载完整hprof文件的情况下分析大型Java堆转储?

是否有工具可以在不加载完整hprof文件的情况下分析大型Java堆转储?,java,profiling,heap,Java,Profiling,Heap,我使用EclipseMat分析hprof文件。这非常好,但是如果您有2Gb堆转储,那么您需要使用2Gb+堆大小运行MAT,以便能够加载完整的堆转储 我想知道是否有人知道有一种工具可以分析2Gb hprof文件,而不使用太多内存(例如,它不加载完整的文件,但以某种方式遍历它)?如果在客户服务器上生成hprof文件,这将非常有用,因为我可以在服务器上运行一些分析,而不是试图通过VPN复制2Gb文件。YourKit的最新版本比以前更好地处理大型堆转储。我在这方面做得很成功,并极力推荐。很久以前,Vir

我使用EclipseMat分析hprof文件。这非常好,但是如果您有2Gb堆转储,那么您需要使用2Gb+堆大小运行MAT,以便能够加载完整的堆转储


我想知道是否有人知道有一种工具可以分析2Gb hprof文件,而不使用太多内存(例如,它不加载完整的文件,但以某种方式遍历它)?如果在客户服务器上生成hprof文件,这将非常有用,因为我可以在服务器上运行一些分析,而不是试图通过VPN复制2Gb文件。

YourKit的最新版本比以前更好地处理大型堆转储。我在这方面做得很成功,并极力推荐。很久以前,Virag Saksena有一个名为Auptyma的工具,但它似乎是Oracle购买的。

hprof文件的格式如果不完全加载它,然后再应用一些交叉引用,那么它就无法正常工作

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

我怀疑这是可能的,但我很好奇,看看是不是。我也是,但我认为这是一个可以提问的地方。我只评估了JProfiler和YourKit,不得不说,在内存不足的情况下,后者比前者做得好得多。当然是YMMV。但从未尝试过EclipseMat。我知道这是一个糟糕的答案,但这就是评论的目的。;-)实际上,通过VPN复制2-gig文件可能比花费所有的时间和精力为您找到并学习一个工具更快。这在很大程度上取决于你希望这样做多少次;如果少于五到六个,您最好复制该文件。