【问题标题】:jvisualvm: Stuck on “Loading Heap Dump...” screenjvisualvm:卡在“正在加载堆转储...”屏幕
【发布时间】:2014-04-14 14:59:04
【问题描述】:

我使用的是 jdk64,我的 java 版本是“1.6.0_24”。我的 tomcat 使用 -Xmx7196m 运行,而 jvisualvm 使用 -J-Xms2048m -J-Xmx3072m 运行。 我对我的 tomcat java 进程进行了堆转储,我的.hprof 文件的大小约为 5.5 GB。当我尝试打开这个堆转储时,它只是停留在Loading Heap Dump... 屏幕上。

我还查看了 VisualVM 在尝试打开堆转储时的堆消耗,但只有大约 500MB。

注意:我确实看过 jvisualvm: Stuck on “Loading Heap Dump” screen 问题,但它有所不同,并没有解决我的问题。

【问题讨论】:

  • 这是一个相当大的文件。您等待它加载转储多长时间,在此期间是否有任何驱动器/CPU 活动?
  • 我等了将近 20 分钟或更长时间。 CPU 活动非常少。

标签: java profiling visualvm jvisualvm hprof


【解决方案1】:

你可以尝试几件事:

  1. 与 JDK 1.6.0_24 捆绑在一起的 Java VisualVM 已经有几年的历史了。尝试使用来自https://visualvm.github.io 的最新版本。
  2. VisualVM 使用内存映射文件,因此您无需使用 3G 堆启动它。我将从 1G 堆开始。当您尝试打开堆转储时,您的操作系统有多少可用内存?
  3. VisualVM右上角应该有进度条,显示堆加载的进度。这应该可以让您知道需要多长时间。

【讨论】:

  • 同时检查您是否可以真正打开 hprof 文件。将其从服务器复制到我的笔记本电脑后,我遇到了权限问题。 Visualvm 错误处理很糟糕,它从不说明任何事情。
  • 那个链接坏了,还有什么办法吗?
【解决方案2】:

当我在 Mac 上运行时尝试加载大型堆转储并且磁盘空间不足(我假设视觉 vm 使用临时文件)时,也会出现这些症状。在我释放磁盘空间后加载文件。

【讨论】:

  • 解决了我的问题,谢谢
【解决方案3】:

我遇到了类似的问题,但意识到有一个例外;可能很难发现:

不知道会不会一直显示这样的错误(我用的是v1.3.9)。

【讨论】:

    【解决方案4】:

    我还注意到如果jvisualvm 没有读取文件的权限,则没有反馈表明问题。 (Java 7)

    【讨论】:

    • 在 java 8 上的 visualvm 1.4.4 上相同。jhat 给出正确的错误
    【解决方案5】:

    如果打开的文件不是有效的堆转储,JvisualVM 也会卡在这个屏幕上。

    在 MAT(来自 Eclipse)上打开相同的(无效)文件,发生错误:

    打开堆转储“heap.hprof”时出错。查看错误日志以获取更多详细信息。

    不是 HPROF 堆转储 (java.io.IOException)

    不是 HPROF 堆转储

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-09-25
      • 1970-01-01
      • 2019-10-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-10-18
      相关资源
      最近更新 更多