![Java 因非法内存访问而崩溃。](https://linux22.com/image/606180/Java%20%E5%9B%A0%E9%9D%9E%E6%B3%95%E5%86%85%E5%AD%98%E8%AE%BF%E9%97%AE%E8%80%8C%E5%B4%A9%E6%BA%83%E3%80%82.png)
我在 OEL 5.8 上使用 Java,它在某些应用程序中崩溃,并出现“非法内存访问。[54] 错误”。它发生在 3 个不同的 Java 安装中。其中 2 个是 Jrockit 版本(R28.2.5-20-152429-1.6.0_37 和 R28.2.2-7-148152-1.6.0_29),第三个是 Sun,所以我猜这不是 Java 的问题,而是 Linux 的问题。一切都运行正常,直到几天前它开始崩溃。它不会在每个 Java 应用程序上崩溃,只有其中几个完全不相关的应用程序崩溃(但它们都有 GUI)。
这是转储的相关部分。如果需要,我可以上传所有内容。
Error Message: Illegal memory access. [54]
Signal info : si_signo=11, si_code=2 si_addr=0x2aaaf618a000
Version : Oracle JRockit(R) R28.2.5-20-152429-1.6.0_37-20120927-1915-linux-x86_64
OS version : Red Hat Enterprise Linux Server release 5.8 (Tikanga)
Linux version 2.6.18-308.13.1.0.1.el5xen ([email protected]) (gcc version 4.1.2 20080704 (Red Hat 4.1.2-52)) #1 SMP Wed Aug 22 05:17:58 EDT 2012 (x86_64)
Hypervisor : Xen v3.4
Thread System: Linux NPTL
LibC release : 2.5-stable
Java locking : Lazy unlocking enabled (class banning) (transfer banning)
State : JVM is running
Command Line : -Dsun.java.command=org.tp23.antinstaller.runtime.ExecInstall swing . -Dsun.java.launcher=SUN_STANDARD org.tp23.antinstaller.runtime.ExecInstall swing .
StackOverFlow: 0 StackOverFlowErrors have occured
OutOfMemory : 0 OutOfMemoryErrors have occured
C Heap : Good; no memory allocations have failed
GC Strategy : Mode: throughput, with strategy: genparpar (basic strategy: genparpar)
GC Status : OC is not running. Last finished OC was OC#0.
: YC is not running. Last finished YC was YC#0.
YC History : Ran 0 YCs since last OC.
Heap Holes : 1 hole(s), at 0x41c67000 - 0x42668000
Heap : 0x3f5fd000 - 0x43ffe000 (Size: 64 MB)
Compaction : (no compaction area)
Allocation : TLA-min: 2048, TLA-preferred: 65536 TLA-waste limit: 2048
NurseryList : 0x3f5fd000 - 0x415fd000
KeepArea : 0x40dfcfe8 - 0x415fd000
KA Markers : [ 0x405fcff0, 0x40dfcfe8 , 0x415fd000 ]
Forbidden A : (none)
Previous KA : (none)
Previous FA : (none)
CompRefs : References are compressed, with heap base 0x0 and shift 0.
然后发生异常的模块:
Loaded modules:
(* denotes the module where the exception occured)
0000000000400000-00000000004128a3 /usr/jrockit/bin/java
00007fff2ebfd000-00007fff2ebfddb7 /usr/jrockit/bin/java
0000003cc1200000-0000003cc1201f93 /lib64/libdl.so.2
0000003cc1600000-0000003cc1615b4f /lib64/libpthread.so.0
0000003cc0600000-0000003cc074d417 /lib64/libc.so.6
0000003cc0200000-0000003cc021bbe7 */lib64/ld-linux-x86-64.so.2
00002add13145000-00002add1344cf33 /usr/jrockit/jre/lib/amd64/jrockit/libjvm.so
部分堆栈跟踪如下:
Thread Stack Trace:
at _dl_relocate_object+981()@0x3cc020a855
at dl_open_worker+569()@0x3cc0210f6a
at <unknown>(???.c)@0x13ad64f0
-- Java stack --
at java/lang/ClassLoader$NativeLibrary.load(Ljava/lang/String;)V(Native Method)
at java/lang/ClassLoader.loadLibrary0(ClassLoader.java:1807)
at java/lang/ClassLoader.loadLibrary(ClassLoader.java:1724)
at java/lang/Runtime.loadLibrary0(Runtime.java:823)
at java/lang/System.loadLibrary(System.java:1028)
at sun/font/FontManager$1.run(FontManager.java:228)
...
提前谢谢你的帮助。