谢谢 Mybeautiful 和 xuxianyue 现在又出现一种情况,就是我调用本地 DLL 文件的时候会突然死掉,而且 JVM 随即就挂了,下面是内存使用情况 Heap def new generation total 576K, used 291K [0x22ae0000, 0x22b80000, 0x22fc0000) eden space 512K, 56% used [0x22ae0000, 0x22b289e0, 0x22b60000) from space 64K, 2% used [0x22b60000, 0x22b60570, 0x22b70000) to space 64K, 0% used [0x22b70000, 0x22b70000, 0x22b80000) tenured generation total 1848K, used 963K [0x22fc0000, 0x2318e000, 0x26ae0000) the space 1848K, 52% used [0x22fc0000, 0x230b0c40, 0x230b0e00, 0x2318e000) compacting perm gen total 8192K, used 2653K [0x26ae0000, 0x272e0000, 0x2aae0000) the space 8192K, 32% used [0x26ae0000, 0x26d77520, 0x26d77600, 0x272e0000) ro space 8192K, 63% used [0x2aae0000, 0x2afeb178, 0x2afeb200, 0x2b2e0000) rw space 12288K, 46% used [0x2b2e0000, 0x2b879fa8, 0x2b87a000, 0x2bee0000)不知道大家能够给些建议?感激不尽
额 DLL 不是自己写的呢,系统的 #写报文# EXCEPTION_ACCESS_VIOLATION发送报文 at pc=0x033337d9,pid=696,tid=3072 #Java VM:Java HotSpot<TM> Client VM(1.5.0_06-b05 mixed mode, sharing) Provlematic frame: C [JCustomOpc.dll+0x637d9] An error report file with more information is saved as hs_err_pid696.log If you would like to submit a bug report, please visit: http://java.sun.com/webapps/bugreport/crash.jsp
Native frames: (J=compiled Java code, j=interpreted, Vv=VM code, C=native code) C [JCustomOpc.dll+0x637d9] J javafish.clients.opc.JOpc.getDownloadGroupNative()Ljavafish/clients/opc/component/OpcGroup; J javafish.clients.opc.JEasyOpc.run()V v ~OSRAdapter j java.lang.Thread.run()V+11 v ~StubRoutines::call_stub V [jvm.dll+0x845a9] V [jvm.dll+0xd9317] V [jvm.dll+0x8447a] V [jvm.dll+0x841d7] V [jvm.dll+0x9ed69] V [jvm.dll+0x109fe3] V [jvm.dll+0x109fb1] C [MSVCRT.dll+0x2a3b0] C [kernel32.dll+0xb729] ----------------------- 像这样 C [JCustomOpc.dll+0x637d9] 说明本地方法在JCustomOpc.dll中,在这里有时能 看出调用方法出错的具体信息, 像这样的错误有并不都是内存溢出。有 可能是其他信息比如:没有这样的方法, 方法的参数类型和个数错误等等。
在catch 处理代码中直接开启线程即可。
{}
这样?
但是现在要做的是要求有一个监听器来监听线程。比如说被监听的线程被阻塞了或者没有抛异常,而且我们不晓得线程怎么样了,就是线程不执行了,这个时候再重启一个线程
从这个功能能介绍看来JMX似乎是用来监控系统状态和管理系统的,如果系统死掉了,就达不到效果了。
谢谢 xuxianyue 期待更好的解决办法
public void setUncaughtExceptionHandler(UncaughtExceptionHandler eh) { 你实现一个UncaughtExceptionHandler去重启Thread(其实是new新的)。不知道是否能实现楼主的想法。
得重新建一个新的线程,
获得原来实现Runnable的对象
Thread t=new Thread(对象引用)
这样行不行。
现在又出现一种情况,就是我调用本地 DLL 文件的时候会突然死掉,而且 JVM 随即就挂了,下面是内存使用情况
Heap
def new generation total 576K, used 291K [0x22ae0000, 0x22b80000, 0x22fc0000)
eden space 512K, 56% used [0x22ae0000, 0x22b289e0, 0x22b60000)
from space 64K, 2% used [0x22b60000, 0x22b60570, 0x22b70000)
to space 64K, 0% used [0x22b70000, 0x22b70000, 0x22b80000)
tenured generation total 1848K, used 963K [0x22fc0000, 0x2318e000, 0x26ae0000)
the space 1848K, 52% used [0x22fc0000, 0x230b0c40, 0x230b0e00, 0x2318e000)
compacting perm gen total 8192K, used 2653K [0x26ae0000, 0x272e0000, 0x2aae0000)
the space 8192K, 32% used [0x26ae0000, 0x26d77520, 0x26d77600, 0x272e0000)
ro space 8192K, 63% used [0x2aae0000, 0x2afeb178, 0x2afeb200, 0x2b2e0000)
rw space 12288K, 46% used [0x2b2e0000, 0x2b879fa8, 0x2b87a000, 0x2bee0000)不知道大家能够给些建议?感激不尽
如果是,请确定自己写的是否正确,
还有调用dll发生错误,一般有异常信息产生,
请贴出异常信息。
#写报文#
EXCEPTION_ACCESS_VIOLATION发送报文
at pc=0x033337d9,pid=696,tid=3072
#Java VM:Java HotSpot<TM> Client VM(1.5.0_06-b05 mixed mode, sharing)
Provlematic frame:
C [JCustomOpc.dll+0x637d9]
An error report file with more information is saved as hs_err_pid696.log
If you would like to submit a bug report, please visit:
http://java.sun.com/webapps/bugreport/crash.jsp
的找异常信息
private native OpcGroup getDownloadGroupNative();
#
# An unexpected error has been detected by HotSpot Virtual Machine:
#
# EXCEPTION_ACCESS_VIOLATION (0xc0000005) at pc=0x033337d9, pid=696, tid=3072
#
# Java VM: Java HotSpot(TM) Client VM (1.5.0_06-b05 mixed mode, sharing)
# Problematic frame:
# C [JCustomOpc.dll+0x637d9]
#--------------- T H R E A D ---------------Current thread (0x02d92310): JavaThread "Thread-1" [_thread_in_native, id=3072]siginfo: ExceptionCode=0xc0000005, reading address 0xc5033337Registers:
EAX=0x00003802, EBX=0xc5033337, ECX=0x03412837, EDX=0x0333a501
ESP=0x0368fb40, EBP=0x0368fb70, ESI=0x02fc27d4, EDI=0x00000002
EIP=0x033337d9, EFLAGS=0x00010217Top of Stack: (sp=0x0368fb40)
0x0368fb40: 032d31cf 03336eb5 00000000 2308ea08
0x0368fb50: 02d92310 02cfa890 00000000 00000000
0x0368fb60: 02fc27d0 0341299c 034129ac 02fc27e0
0x0368fb70: 0368fb88 00bc2140 02d923d0 0368fb90
0x0368fb80: ff829a18 22b10cc0 0368fc20 00bcfd4c
0x0368fb90: 2308ea08 00000000 2308ea08 22af8870
0x0368fba0: 6d763d90 0368fc08 6d73ce4f 6d7965e8
0x0368fbb0: 6d67af8b 0368fc14 0368fc18 6d6aa0bf Instructions: (pc=0x033337d9)
0x033337c9: e0 e9 cd 21 fa ff b1 37 33 03 bb 37 33 03 c5 37
0x033337d9: 33 03 89 37 33 03 93 37 33 03 9d 37 33 03 a7 37
Stack: [0x03650000,0x03690000), sp=0x0368fb40, free space=254k
Native frames: (J=compiled Java code, j=interpreted, Vv=VM code, C=native code)
C [JCustomOpc.dll+0x637d9]
J javafish.clients.opc.JOpc.getDownloadGroupNative()Ljavafish/clients/opc/component/OpcGroup;
J javafish.clients.opc.JEasyOpc.run()V
v ~OSRAdapter
j java.lang.Thread.run()V+11
v ~StubRoutines::call_stub
V [jvm.dll+0x845a9]
V [jvm.dll+0xd9317]
V [jvm.dll+0x8447a]
V [jvm.dll+0x841d7]
V [jvm.dll+0x9ed69]
V [jvm.dll+0x109fe3]
V [jvm.dll+0x109fb1]
C [MSVCRT.dll+0x2a3b0]
C [kernel32.dll+0xb729]Java frames: (J=compiled Java code, j=interpreted, Vv=VM code)
J javafish.clients.opc.JOpc.getDownloadGroupNative()Ljavafish/clients/opc/component/OpcGroup;
J javafish.clients.opc.JEasyOpc.run()V
v ~OSRAdapter
j java.lang.Thread.run()V+11
v ~StubRoutines::call_stub--------------- P R O C E S S ---------------Java Threads: ( => current thread )
0x00a95740 JavaThread "RMI LeaseChecker" daemon [_thread_blocked, id=188]
0x00aa3200 JavaThread "RMI RenewClean-[192.168.127.17:1037]" daemon [_thread_blocked, id=4056]
0x02d33008 JavaThread "GC Daemon" daemon [_thread_blocked, id=3800]
0x02d19008 JavaThread "RMI Reaper" [_thread_blocked, id=3796]
0x00ad11a8 JavaThread "RMI TCP Accept-0" daemon [_thread_in_native, id=3792]
0x00a91e58 JavaThread "RMI TCP Accept-8808" daemon [_thread_in_native, id=3788]
0x00a91b90 JavaThread "Timer-0" daemon [_thread_blocked, id=1940]
0x00aa0e68 JavaThread "Thread-24" [_thread_blocked, id=3316]
0x00a62c28 JavaThread "Thread-23" [_thread_in_native, id=3312]
0x00a61ee0 JavaThread "Thread-22" [_thread_blocked, id=3308]
0x00a61238 JavaThread "Thread-21" [_thread_blocked, id=3304]
0x00a60590 JavaThread "Thread-20" [_thread_blocked, id=3300]
0x00a5f9b0 JavaThread "Thread-19" [_thread_blocked, id=3296]
0x02d30638 JavaThread "Thread-18" [_thread_blocked, id=3292]
0x02d2fa58 JavaThread "Thread-17" [_thread_blocked, id=3288]
0x02d66d48 JavaThread "Thread-16" [_thread_blocked, id=3284]
0x02d8db38 JavaThread "Thread-15" [_thread_blocked, id=2632]
0x02d8cfb0 JavaThread "Thread-14" [_thread_blocked, id=3280]
0x02d64030 JavaThread "Thread-13" [_thread_blocked, id=3276]
0x02e13618 JavaThread "Thread-12" [_thread_blocked, id=3272]
0x02ef1948 JavaThread "Thread-11" [_thread_blocked, id=3268]
0x02db0608 JavaThread "Thread-10" [_thread_blocked, id=3264]
0x02daf9f8 JavaThread "Thread-9" [_thread_blocked, id=3260]
0x02da2940 JavaThread "Thread-8" [_thread_blocked, id=3256]
0x02d365d8 JavaThread "Thread-7" [_thread_blocked, id=3252]
0x02f6e9f0 JavaThread "Thread-6" [_thread_blocked, id=3248]
0x02f6e468 JavaThread "Thread-5" [_thread_blocked, id=3244]
0x02d32720 JavaThread "Thread-4" [_thread_blocked, id=3240]
0x02f9ea20 JavaThread "Thread-3" [_thread_in_native, id=3236]
=>0x02d92310 JavaThread "Thread-1" [_thread_in_native, id=3072]
0x00aa8310 JavaThread "Thread-2" [_thread_blocked, id=3068]
0x02d22118 JavaThread "MySQL Statement Cancellation Timer" daemon [_thread_blocked, id=2764]
0x00a8e150 JavaThread "Low Memory Detector" daemon [_thread_blocked, id=456]
0x00a8cd20 JavaThread "CompilerThread0" daemon [_thread_blocked, id=812]
0x00a8c030 JavaThread "Signal Dispatcher" daemon [_thread_blocked, id=808]
0x00a867f8 JavaThread "Finalizer" daemon [_thread_blocked, id=800]
0x00a65c20 JavaThread "Reference Handler" daemon [_thread_blocked, id=796]
0x000341a0 JavaThread "main" [_thread_blocked, id=700]Other Threads:
0x00a85340 VMThread [id=780]
0x00aa8bb0 WatcherThread [id=840]VM state:not at safepoint (normal execution)VM Mutex/Monitor currently owned by a thread: NoneHeap
def new generation total 576K, used 291K [0x22ae0000, 0x22b80000, 0x22fc0000)
eden space 512K, 56% used [0x22ae0000, 0x22b289e0, 0x22b60000)
from space 64K, 2% used [0x22b60000, 0x22b60570, 0x22b70000)
to space 64K, 0% used [0x22b70000, 0x22b70000, 0x22b80000)
tenured generation total 1848K, used 963K [0x22fc0000, 0x2318e000, 0x26ae0000)
the space 1848K, 52% used [0x22fc0000, 0x230b0c40, 0x230b0e00, 0x2318e000)
compacting perm gen total 8192K, used 2653K [0x26ae0000, 0x272e0000, 0x2aae0000)
the space 8192K, 32% used [0x26ae0000, 0x26d77520, 0x26d77600, 0x272e0000)
ro space 8192K, 63% used [0x2aae0000, 0x2afeb178, 0x2afeb200, 0x2b2e0000)
rw space 12288K, 46% used [0x2b2e0000, 0x2b879fa8, 0x2b87a000, 0x2bee0000)Dynamic libraries:
0x00400000 - 0x0040c000 C:\WINDOWS\system32\java.exe
0x7c920000 - 0x7c9b6000 C:\WINDOWS\system32\ntdll.dll
0x7c800000 - 0x7c91e000 C:\WINDOWS\system32\kernel32.dll
0x77da0000 - 0x77e49000 C:\WINDOWS\system32\ADVAPI32.dll
0x77e50000 - 0x77ee2000 C:\WINDOWS\system32\RPCRT4.dll
0x77fc0000 - 0x77fd1000 C:\WINDOWS\system32\Secur32.dll
0x77be0000 - 0x77c38000 C:\WINDOWS\system32\MSVCRT.dll
0x6d670000 - 0x6d804000 C:\Java\jre1.5.0_06\bin\client\jvm.dll
0x77d10000 - 0x77da0000 C:\WINDOWS\system32\USER32.dll
0x77ef0000 - 0x77f39000 C:\WINDOWS\system32\GDI32.dll
0x76b10000 - 0x76b3a000 C:\WINDOWS\system32\WINMM.dll
0x76300000 - 0x7631d000 C:\WINDOWS\system32\IMM32.DLL
0x62c20000 - 0x62c29000 C:\WINDOWS\system32\LPK.DLL
0x73fa0000 - 0x7400b000 C:\WINDOWS\system32\USP10.dll
0x6d280000 - 0x6d288000 C:\Java\jre1.5.0_06\bin\hpi.dll
0x76bc0000 - 0x76bcb000 C:\WINDOWS\system32\PSAPI.DLL
0x6d640000 - 0x6d64c000 C:\Java\jre1.5.0_06\bin\verify.dll
0x6d300000 - 0x6d31d000 C:\Java\jre1.5.0_06\bin\java.dll
0x6d660000 - 0x6d66f000 C:\Java\jre1.5.0_06\bin\zip.dll
0x032d0000 - 0x0334c000 E:\ruanjian\软件包\JCWSYSTEM\lib\JCustomOpc.dll
0x770f0000 - 0x7717b000 C:\WINDOWS\system32\oleaut32.dll
0x76990000 - 0x76acd000 C:\WINDOWS\system32\ole32.dll
0x77bd0000 - 0x77bd8000 C:\WINDOWS\system32\version.dll
0x5d170000 - 0x5d20a000 C:\WINDOWS\system32\comctl32.dll
0x5adc0000 - 0x5adf7000 C:\WINDOWS\system32\uxtheme.dll
0x74680000 - 0x746cc000 C:\WINDOWS\system32\MSCTF.dll
0x73640000 - 0x7366e000 C:\WINDOWS\system32\msctfime.ime
0x58a00000 - 0x58a07000 C:\WINDOWS\system32\Wship6.dll
0x71a20000 - 0x71a37000 C:\WINDOWS\system32\WS2_32.dll
0x71a10000 - 0x71a18000 C:\WINDOWS\system32\WS2HELP.dll
0x6d4c0000 - 0x6d4d3000 C:\Java\jre1.5.0_06\bin\net.dll
0x719c0000 - 0x719fe000 C:\WINDOWS\System32\mswsock.dll
0x76ef0000 - 0x76f17000 C:\WINDOWS\system32\DNSAPI.dll
0x76d30000 - 0x76d48000 C:\WINDOWS\system32\iphlpapi.dll
0x76f80000 - 0x76f88000 C:\WINDOWS\System32\winrnr.dll
0x76f30000 - 0x76f5c000 C:\WINDOWS\system32\WLDAP32.dll
0x76f90000 - 0x76f96000 C:\WINDOWS\system32\rasadhlp.dll
0x60fd0000 - 0x61025000 C:\WINDOWS\system32\hnetcfg.dll
0x71a00000 - 0x71a08000 C:\WINDOWS\System32\wshtcpip.dll
0x76fa0000 - 0x7701f000 C:\WINDOWS\system32\CLBCATQ.DLL
0x77020000 - 0x770ba000 C:\WINDOWS\system32\COMRes.dll
0x036a0000 - 0x03be9000 C:\WINDOWS\system32\xpsp2res.dll
0x10000000 - 0x10014000 C:\Program Files\OMRON\SYSMAC OPC Server\bin\OPCProxy.dll
0x7c9c0000 - 0x7cc7c000 C:\WINDOWS\system32\msi.dll
0x68000000 - 0x68036000 C:\WINDOWS\system32\rsaenh.dll
0x759d0000 - 0x75a7f000 C:\WINDOWS\system32\USERENV.dll
0x5fdd0000 - 0x5fe26000 C:\WINDOWS\system32\netapi32.dll
0x6d5f0000 - 0x6d5f6000 C:\Java\jre1.5.0_06\bin\rmi.dll
0x76d70000 - 0x76d92000 C:\WINDOWS\system32\Apphelp.dllVM Arguments:
java_command: JCWSystem.jar
Launcher Type: SUN_STANDARDEnvironment Variables:
PATH=C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;C:\Program Files\Intel\DMIX;C:\Program Files\MySQL\MySQL Server 5.0\bin
USERNAME=Administrator
OS=Windows_NT
PROCESSOR_IDENTIFIER=x86 Family 6 Model 23 Stepping 10, GenuineIntel--------------- S Y S T E M ---------------OS: Windows XP Build 2600 Service Pack 3CPU:total 2 family 6, cmov, cx8, fxsr, mmx, sse, sse2, htMemory: 4k page, physical 2087340k(1605676k free), swap 4025848k(3613124k free)vm_info: Java HotSpot(TM) Client VM (1.5.0_06-b05) for windows-x86, built on Nov 10 2005 11:12:14 by "java_re" with MS VC++ 6.0
C [JCustomOpc.dll+0x637d9]
J javafish.clients.opc.JOpc.getDownloadGroupNative()Ljavafish/clients/opc/component/OpcGroup;
J javafish.clients.opc.JEasyOpc.run()V
v ~OSRAdapter
j java.lang.Thread.run()V+11
v ~StubRoutines::call_stub
V [jvm.dll+0x845a9]
V [jvm.dll+0xd9317]
V [jvm.dll+0x8447a]
V [jvm.dll+0x841d7]
V [jvm.dll+0x9ed69]
V [jvm.dll+0x109fe3]
V [jvm.dll+0x109fb1]
C [MSVCRT.dll+0x2a3b0]
C [kernel32.dll+0xb729]
-----------------------
像这样 C [JCustomOpc.dll+0x637d9]
说明本地方法在JCustomOpc.dll中,在这里有时能
看出调用方法出错的具体信息,
像这样的错误有并不都是内存溢出。有
可能是其他信息比如:没有这样的方法,
方法的参数类型和个数错误等等。
dll中有如下:
java_javafish_clients_opc_JOpc_getDownloadGroupNative 地址为0066D30
我觉得应该是此dll的bug 因为他是有的电脑(不止一个)有时出(时间可以是半年),像现在我等着他出,他都不出,无语至极!!!