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:卡在“加载堆转储”屏幕上的主要内容,如果未能解决你的问题,请参考以下文章
应用程序卡在 Android 12(API 级别 31)的初始屏幕上