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

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

有帮助吗?

解决方案

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

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

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

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

其他提示

找到答案!

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

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

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

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

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

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

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

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

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

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

请注意,这种方法可能会导致安全问题,并且只有在您没有其他选择且100%知道您在做什么的情况下才会使用它。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top