jvisualvm:卡在“加载堆转储”屏幕上

Posted

技术标签:

【中文标题】jvisualvm:卡在“加载堆转储”屏幕上【英文标题】:jvisualvm: Stuck on "Loading Heap Dump" screen 【发布时间】:2013-05-09 12:11:37 【问题描述】:

我使用以下命令使用 hprof 创建了一个堆转储文件:

java -agentlib:hprof -cp "..\..\jars\trove.jar;.\bin" com.mysite.MyApp

这成功创建了大约 5MB 的文件“java.hprof.txt”。然后我打开 jvisualvm 来查看这个文件,并把它加载进去。但是 visualvm 似乎卡在加载屏幕上。下面的屏幕已经启动了大约 10 分钟。

我错过了一步吗?我应该在 hprof 的命令行上使用不同的选项吗?如何读取这个堆转储文件?

【问题讨论】:

【参考方案1】:

VisualVM 支持二进制 HPROF 格式的堆转储。使用 VisualVM 创建堆转储更容易。如果这不可能使用 VisualVM,您可以使用jmap -dump:live,format=b,file=heap.bin <pid>。优点是不需要任何特殊的启动参数,也不会因为 hprof 代理库而导致速度变慢。

【讨论】:

【参考方案2】:

就我而言,我通过更改 heapdump 文件的文件权限解决了这个问题。结果 VisualVM 试图加载文件但权限被拒绝(这很奇怪,因为 VisualVM 是创建转储文件的那个),但是 VisualVM 不会给你错误消息。我已经下载了 eclipse 内存分析器 (https://www.eclipse.org/mat/downloads.php)。它给了我一条错误消息。

【讨论】:

以上是关于jvisualvm:卡在“加载堆转储”屏幕上的主要内容,如果未能解决你的问题,请参考以下文章

如何从正在运行的应用程序的堆转储中提取 java 类定义?

如何从 IntentService 创建吐司?它卡在屏幕上

应用程序卡在 Android 12(API 级别 31)的初始屏幕上

Java性能调优:利用VisualVM进行性能分析

更换系统共享库之一后,nexus 5x 卡在 Google 屏幕上

AVD 模拟器卡在 Android Studio 的加载屏幕上