运行Java程序的时候,报错:EXCEPTION_ACCESS_VIOLATION (0xc0000005);

【Java】Java程序报错:EXCEPTION_ACCESS_VIOLATION (0xc0000005)_java经验集锦

根据​​原网页​​的说明:

【Java】Java程序报错:EXCEPTION_ACCESS_VIOLATION (0xc0000005)_高并发_02

EXCEPTION_ACCESS_VIOLATION

In rare circumstances, a Java program could stop with a message similar to the following:
An unexpected error has been detected by HotSpot Virtual Machine:
EXCEPTION_ACCESS_VIOLATION (0xc0000005) at pc=0x7c042340, pid=1743, tid=122
Java VM: Java HotSpot(TM) Client VM (1.5.4_02)
Problematic frame:
C [ntdll.dll+0x2430]
Essentially, Java will stop with a message such as the above if a "serious" error occurs that means the JVM can't continue to function. Usually, the most discriminating line is the first mention of a DLL, such as the line in bold above. The source of the error could be any of the following:

1. a bug in the JVM itself; search Google and/or the Java web site for
a mention of ntdll.dll+0x2430;
2. a bug in some non-Java code that was being run at the time: e.g.
Java might have been calling into a printer driver, graphics driver
etc.

If you're not sure what to do but are not using the latest version of the JVM for your system, then a good first course of action is usually to upgrade your JVM. If the bug is in some other DLL, e.g. a printer driver, database driver, graphics driver etc, then it is best to see if you can upgrade the component in question.

If the error is occurring in some native code that you have written, then you need to find out which line of code corresponds to the offset mentioned (in this case, 0x2430, although the DLL isn't one of ours in this example). Usually you can tell your compiler to generate a "map


这里可能的原因有:

1. a bug in the JVM itself; search Google and/or the Java web site for

a mention of ntdll.dll+0x2430;

一个JVM自身的bug,访问谷歌或者Java网站寻求(根据 ntdll.dll+0x2430这个信息)

2. a bug in some non-Java code that was being run at the time: e.g.

Java might have been calling into a printer driver, graphics driver

etc.

一个正在运行的非Java代码的某个bug,可能导致调用了打印驱动器,比如这个图形驱动器等;

这里,我的建议是:

1、可能是端口号冲突,关闭不必要的其它Java程序;

2、同一个Java程序,可能内部会设置某个功能为自动启动(会挤掉你现在用的这个Java程序),如果有暂停按钮,先暂停同一个Java程序中的那个功能(不影响的情况下),先跑自己这部分的功能,等自己这部分功能跑完了,再启动其它的功能;

相关资料:

(1)JNA: EXCEPTION_ACCESS_VIOLATION:https://stackoverflow.com/questions/29538130/jna-exception-access-violation