Java VM EXCEPTION_ACCESS_VIOLATION的可能原因?

2022-09-01 04:41:26

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

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


答案 1

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

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

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

VM 在内存不足的情况下崩溃的可能性也比其他情况大得多。


答案 2

答案已找到!

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