Java VM EXCEPTION_ACCESS_VIOLATION的可能原因?

时间:2008-09-26 14:56:37

标签: java null jvm crash swt

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

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

5 个答案:

答案 0 :(得分:15)

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

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

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

在内存不足的情况下,VM也更容易崩溃。

答案 1 :(得分:6)

找到答案!

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

答案 2 :(得分:2)

首先应该做的是将JVM升级到最新版本。

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

最重要的是,JVM永远不应该崩溃,正如上面提到的那样,如果你没有做任何JNI,那么我的直觉就是你有硬件问题。

答案 3 :(得分:1)

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

答案 4 :(得分:0)

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

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

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