当Java VM与EXCEPTION_ACCESS_VIOLATION崩溃并生成hs_err_pidXXX.log文件时,这表示什么?错误本身基本上是一个空指针异常。它总是由JVM中的错误引起,还是存在其他原因,如硬件故障或软件冲突?
编辑:有一个本机组件,这是win32上的SWT应用程序。
答案 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 217306和bug 127960。但是,这两个错误报告并不是JVM在SWT中崩溃的唯一错误报告。
如果您没有使用浏览器小部件,那么这些建议对您没有帮助。在这种情况下,您可以搜索SWT bugs causing a JVM crash列表。如果这些都不是您的问题,那么我强烈建议您使用SWT打开错误报告。