【问题标题】:Possible causes of Java VM EXCEPTION_ACCESS_VIOLATION?Java VM EXCEPTION_ACCESS_VIOLATION 的可能原因?
【发布时间】:2010-09-13 11:49:21
【问题描述】:

当 Java VM 因 EXCEPTION_ACCESS_VIOLATION 崩溃并生成 hs_err_pidXXX.log 文件时,这表明什么?错误本身基本上是一个空指针异常。它总是由 JVM 中的错误引起的,还是有其他原因,例如硬件或软件冲突故障?

编辑:有一个原生组件,这是一个win32上的SWT应用程序。

【问题讨论】:

  • 你是否在做任何涉及本机代码的事情,比如 Java3D 之类的?

标签: java null jvm crash swt


【解决方案1】:

大多数情况下,这是 VM 中的错误。 但它可能由任何本机代码(例如 JNI 调用)引起。

hs_err_pidXXX.log 文件应包含有关问题发生位置的一些信息。

您还可以检查文件中的“堆”部分。许多 VM 错误是由垃圾收集引起的(尤其是在较旧的 VM 中)。本部分应向您显示崩溃时垃圾是否正在运行。此部分还显示,如果堆的某些部分被填充(百分比数字)。

虚拟机在内存不足的情况下也比其他情况更容易崩溃。

【讨论】:

【解决方案2】:

找到答案!

我遇到了同样的错误,并注意到提供 pid 日志文件内容的其他人正在运行 64 位 Windows。就像我。在最后的日志文件中,它包含 PATH 语句。在那里我可以看到 C:\Windows\SysWOW64 被错误地列在前面:%SystemRoot%\system32。一旦我纠正它,异常就消失了。

【讨论】:

  • 非常感谢!原来我在我的 PATH 变量中也有一个错误的条目,并且更正它解决了这个问题。
【解决方案3】:

您应该做的第一件事是将您的 JVM 升级到最新版本。

你能重复一下这个问题吗?或者它似乎是随机发生的?我们最近遇到了一个问题,即我们的 JVM 在各处随机崩溃。原来是硬件问题。我们将驱动器放在一个新服务器中,它完全消失了。

最重要的是,JVM 永远不会崩溃,正如上面的海报所提到的,如果您不执行任何 JNI,那么我的直觉是您有硬件问题。

【讨论】:

  • 您能描述一下具体是什么问题吗?我正在努力解决此类错误,并思考如何检测硬件问题。
  • 检测硬件问题的一种方法是查看窗口的“事件查看器”。那里将报告硬件问题的变化很大。
【解决方案4】:

如果您知道要查找的内容,问题的原因将记录在 hs_err* 文件中。看一看,如果仍然不清楚,请考虑发布堆栈跟踪的前 5 或 10 行和其他相关信息(不要发布整个内容,那里有大量信息无济于事 -但你必须弄清楚哪 1% 很重要 :-))

【讨论】:

    【解决方案5】:

    您是否正在使用浏览器小部件并在浏览器小部件中执行 javascript?如果是这样,那么某些版本的 SWT 中存在导致 JVM 在本地代码和各种 Windows 库中崩溃的错误。

    两个例子(我打开的)是bug 217306bug 127960。然而,这两个错误报告并不是 JVM 在 SWT 中崩溃的唯一错误报告。

    如果您不使用浏览器小部件,那么这些建议对您没有帮助。在这种情况下,您可以搜索SWT bugs causing a JVM crash 的列表。如果这些都不是您的问题,那么我强烈建议您使用 SWT 打开错误报告。

    【讨论】:

      【解决方案6】:

      我已经使用了很长时间并且非常可靠的 JNLP 应用程序也有同样的问题。我从 Windows 7 升级到 Windows 10 后立即出现问题。根据我的调查,这很可能是 Win 10 中的一个错误。

      以下不是解决方案,而是一个丑陋的解决方法。在jre/bin 目录下,有javaws.exe。如果我右键单击 /Properties/Compatibility 并勾选以管理员身份运行此程序,JNLP 应用程序开始工作。

      请注意,这种方法可能会导致安全问题,只有在您别无选择且 100% 知道自己在做什么时才使用它。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2016-04-13
        • 2012-09-18
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多