jvm Java VM EXCEPTION_ACCESS_VIOLATION的原因

wa7juj8i  于 12个月前  发布在  Java
关注(0)|答案(7)|浏览(253)

当Java VM因EXCEPTION_ACCESS_VIOLATION而崩溃并生成hs_err_pidXXX. log文件时,这意味着什么?错误本身基本上是一个空指针异常。它总是由JVM中的bug引起的吗?还是有其他原因,如硬件故障或软件冲突?
编辑:有一个本地组件,这是一个Win32上的SWT应用程序。

af7jpaap

af7jpaap1#

大多数情况下,这是VM中的一个bug。但它可以由任何本机代码(例如JNI调用)引起。
hs_err_pidXXX.log文件应包含有关问题发生位置的一些信息。
您还可以检查文件中的“Heap”部分。许多VM错误都是由垃圾收集引起的(尤其是在较旧的VM中)。此部分应显示崩溃时垃圾是否正在运行。此外,此部分还显示堆的某些部分是否已填满(百分比数字)。
VM在内存不足的情况下也更容易崩溃。

epggiuax

epggiuax2#

找到答案了!
我有同样的错误,并注意到其他人谁提供的pid日志文件的内容是运行64位Windows.就像我.在结束日志文件,它包括PATH语句.在那里我可以看到C:\Windows\SysWOW64被错误地列在前面:%SystemRoot%\system32.一旦我纠正它,异常消失.

t9eec4r0

t9eec4r03#

你应该做的第一件事是升级你的JVM到最新的。
你能再说一遍吗?或者它似乎是随机发生的?我们最近遇到了一个问题,我们的JVM在随机时间崩溃。原来这是一个硬件问题。我们把驱动器放在一个新的服务器上,它完全消失了。
底线是,JVM永远不应该崩溃,正如上面提到的海报,如果你没有做任何JNI,那么我的直觉是你有一个硬件问题。

vybvopom

vybvopom4#

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

gpfsuwkq

gpfsuwkq5#

您是否正在使用浏览器小部件并在浏览器小部件中执行JavaScript?如果是这样,则在某些版本的SWT中存在错误,导致JVM在各种Windows库中的本机代码中崩溃。
我打开的两个例子是bug 217306bug 127960。然而,这两个bug报告并不是SWT中JVM崩溃的唯一bug报告。
如果你没有使用浏览器小部件,那么这些建议对你没有帮助。在这种情况下,你可以搜索SWT bugs causing a JVM crash的列表。如果这些都不是你的问题,那么我强烈建议你用SWT打开一个bug报告。

66bbxpm5

66bbxpm56#

我有一个JNLP应用程序,我已经使用了很长一段时间,是相当可靠的同样的问题.这个问题开始后,我从Windows 7升级到Windows 10.根据我的调查,这很可能是一个错误在Win 10.
以下不是解决方案,而是一个丑陋的解决方案。在jre/bin目录中,有javaws.exe。如果我 * 右键单击***/Properties/Compatibility并勾选以管理员身份运行此程序**,JNLP应用程序开始工作。
请注意,这种方法可能会导致安全问题,只有在你没有其他选择并且100%知道你在做什么的情况下才使用它。

balp4ylt

balp4ylt7#

在Java build 1.8.0_271-b 09上遇到了这个致命错误,EXCEPTION_ACCESS_VIOLATION。查看 hs_err_pidxxx.log,它看起来像是在进行垃圾收集时遇到了问题。GC之后堆空间从未下降。事实证明,我只需要关闭一些未使用的应用程序来释放内存。将内存使用量降低到我16 GB RAM Windows 10机器的50%,再次运行Java应用程序,错误消失了。

相关问题