一个接口程序,功能为,从数据源提供的VC写的API获取数据,接口程序是JAVA写的,但是从API获取数据处使用的是VC,然后用JNI将得到的消息(数据)传递给JAVA,JAVA程序再做后续处理。
VM 参数为:
-Dcom.sun.management.jmxremote.port=6050 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false -Xms1024m -Xmx1610m现在程序在跑了一段时间后监控台会出现如下错误,请求专家帮忙诊断是哪里出的错:
(注,原来同事说是JDK的BUG,后来把JDK从1.5升级到1.6后,错误依然)
#
# An unexpected error has been detected by Java Runtime Environment:
#
# java.lang.OutOfMemoryError: requested 8192000 bytes for GrET in C:\BUILD_AREA\
jdk6_13\hotspot\src\share\vm\utilities\growableArray.cpp. Out of swap space?
#
#  Internal Error (allocation.inline.hpp:42), pid=2460, tid=2404
#  Error: GrET in C:\BUILD_AREA\jdk6_13\hotspot\src\share\vm\utilities\growableA
rray.cpp
#
# Java VM: Java HotSpot(TM) Client VM (11.3-b02 mixed mode windows-x86)
# An error report file with more information is saved as:
# D:\tenfore\hs_err_pid2460.log
#
# If you would like to submit a bug report, please visit:
#   http://java.sun.com/webapps/bugreport/crash.jsp
#
并在程序目录下生成一个错误日志,hs_err_pid***.log(*为进程号),内容如下:
#
# An unexpected error has been detected by Java Runtime Environment:
#
# java.lang.OutOfMemoryError: requested 8192000 bytes for GrET in C:\BUILD_AREA\jdk6_13\hotspot\src\share\vm\utilities\growableArray.cpp. Out of swap space?
#
#  Internal Error (allocation.inline.hpp:42), pid=2460, tid=2404
#  Error: GrET in C:\BUILD_AREA\jdk6_13\hotspot\src\share\vm\utilities\growableArray.cpp
#
# Java VM: Java HotSpot(TM) Client VM (11.3-b02 mixed mode windows-x86)
# If you would like to submit a bug report, please visit:
#   http://java.sun.com/webapps/bugreport/crash.jsp
#---------------  T H R E A D  ---------------Current thread (0x6d1a4000):  VMThread [stack: 0x6d230000,0x6d280000] [id=2404]Stack: [0x6d230000,0x6d280000]
[error occurred during error reporting (printing stack bounds), id 0x80000001]VM_Operation (0x6ea5f6b8): GenCollectForAllocation, mode: safepoint, requested by thread 0x6de10c00

解决方案 »

  1.   

    接上面错误内容:---------------  P R O C E S S  ---------------Java Threads: ( => current thread )
      0x6dfd4000 JavaThread "RMI TCP Connection(6)-172.16.25.129" daemon [_thread_in_native, id=3348, stack(0x6e970000,0x6e9c0000)]
      0x6e698400 JavaThread "RMI TCP Connection(4)-172.16.25.129" daemon [_thread_in_native, id=3416, stack(0x71240000,0x71290000)]
      0x7001c000 JavaThread "RMI TCP Connection(2)-172.16.25.129" daemon [_thread_blocked, id=3372, stack(0x711a0000,0x711f0000)]
      0x70018800 JavaThread "JMX server connection timeout 51" daemon [_thread_blocked, id=3812, stack(0x71150000,0x711a0000)]
      0x6ff86c00 JavaThread "RMI Scheduler(0)" daemon [_thread_blocked, id=1492, stack(0x71100000,0x71150000)]
      0x6dfdc400 JavaThread "AnonymousIoService-16" daemon [_thread_blocked, id=1860, stack(0x6f7f0000,0x6f840000)]
      0x6de8d800 JavaThread "AnonymousIoService-15" daemon [_thread_blocked, id=1996, stack(0x6f7a0000,0x6f7f0000)]
      0x6de3c000 JavaThread "AnonymousIoService-14" daemon [_thread_blocked, id=3600, stack(0x6f750000,0x6f7a0000)]
      0x6de39400 JavaThread "AnonymousIoService-13" daemon [_thread_blocked, id=3684, stack(0x6f700000,0x6f750000)]
      0x6de36c00 JavaThread "AnonymousIoService-12" daemon [_thread_blocked, id=3680, stack(0x6f6b0000,0x6f700000)]
      0x6de27400 JavaThread "AnonymousIoService-11" daemon [_thread_blocked, id=3676, stack(0x6f660000,0x6f6b0000)]
      0x6e494c00 JavaThread "AnonymousIoService-10" daemon [_thread_blocked, id=3664, stack(0x6f610000,0x6f660000)]
      0x6de21c00 JavaThread "AnonymousIoService-9" daemon [_thread_blocked, id=2072, stack(0x6f5c0000,0x6f610000)]
      0x6d1fa400 JavaThread "AnonymousIoService-8" daemon [_thread_blocked, id=3660, stack(0x6f570000,0x6f5c0000)]
      0x6d1f7800 JavaThread "AnonymousIoService-7" daemon [_thread_blocked, id=3656, stack(0x6f520000,0x6f570000)]
      0x6d1fc800 JavaThread "AnonymousIoService-6" daemon [_thread_blocked, id=3652, stack(0x6f4d0000,0x6f520000)]
      0x6d200400 JavaThread "AnonymousIoService-5" daemon [_thread_blocked, id=1772, stack(0x6f480000,0x6f4d0000)]
      0x6d1f3000 JavaThread "Thread-15" daemon [_thread_blocked, id=3648, stack(0x6f430000,0x6f480000)]
      0x6d1f0800 JavaThread "AnonymousIoService-4" daemon [_thread_blocked, id=3644, stack(0x6f3e0000,0x6f430000)]
      0x6d1e9c00 JavaThread "AnonymousIoService-3" daemon [_thread_blocked, id=3632, stack(0x6f390000,0x6f3e0000)]
      0x6d1e9400 JavaThread "AnonymousIoService-2" daemon [_thread_blocked, id=3640, stack(0x6f340000,0x6f390000)]
      0x6d201400 JavaThread "AnonymousIoService-1" daemon [_thread_blocked, id=3636, stack(0x6f2f0000,0x6f340000)]
      0x6dfd3800 JavaThread "SocketConnectorIoProcessor-0.0" [_thread_blocked, id=3628, stack(0x6e8d0000,0x6e920000)]
      0x6d1e3c00 JavaThread "SocketAcceptor-0" [_thread_in_native, id=3620, stack(0x6f250000,0x6f2a0000)]
      0x6df89c00 JavaThread "PooledByteBufferExpirer-0" daemon [_thread_blocked, id=3616, stack(0x6f080000,0x6f0d0000)]
      0x002f6800 JavaThread "DestroyJavaVM" [_thread_blocked, id=2380, stack(0x00a00000,0x00a50000)]
      0x6d1e4400 JavaThread "Timer-2" [_thread_blocked, id=1748, stack(0x6ebe0000,0x6ec30000)]
      0x6de84400 JavaThread "Timer-1" [_thread_blocked, id=3604, stack(0x6eb80000,0x6ebd0000)]
      0x6de10400 JavaThread "Thread-11" [_thread_blocked, id=3596, stack(0x6eb30000,0x6eb80000)]
      0x6de10c00 JavaThread "Thread-9" [_thread_blocked, id=2828, stack(0x6ea10000,0x6ea60000)]
      0x6df91000 JavaThread "Thread-8" [_thread_blocked, id=2820, stack(0x6e9c0000,0x6ea10000)]
      0x6dfd7400 JavaThread "Thread-7" [_thread_blocked, id=1892, stack(0x6e920000,0x6e970000)]
      0x6df9d800 JavaThread "Store sampleCache1 Expiry Thread" daemon [_thread_blocked, id=1876, stack(0x6e880000,0x6e8d0000)]
      0x6df96400 JavaThread "Store sampleCache1 Spool Thread" daemon [_thread_blocked, id=1896, stack(0x6e830000,0x6e880000)]
      0x6dfab000 JavaThread "MySQL Statement Cancellation Timer" daemon [_thread_blocked, id=1864, stack(0x6e3e0000,0x6e430000)]
      0x6df80000 JavaThread "com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread-#2" daemon [_thread_blocked, id=3592, stack(0x6e390000,0x6e3e0000)]
      0x6df66400 JavaThread "com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread-#1" daemon [_thread_blocked, id=3588, stack(0x6e340000,0x6e390000)]
      0x6df32400 JavaThread "com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread-#0" daemon [_thread_blocked, id=3584, stack(0x6e2f0000,0x6e340000)]
      0x6df82400 JavaThread "Timer-0" daemon [_thread_blocked, id=3580, stack(0x6e2a0000,0x6e2f0000)]
      0x6deb9000 JavaThread "RMI TCP Accept-0" daemon [_thread_in_native, id=2648, stack(0x6e200000,0x6e250000)]
      0x6deae000 JavaThread "RMI TCP Accept-6050" daemon [_thread_in_native, id=2660, stack(0x6e1b0000,0x6e200000)]
      0x6deaa400 JavaThread "RMI TCP Accept-0" daemon [_thread_in_native, id=2640, stack(0x6e160000,0x6e1b0000)]
      0x6d1ca400 JavaThread "Low Memory Detector" daemon [_thread_blocked, id=2616, stack(0x6d7f0000,0x6d840000)]
      0x6d1c2000 JavaThread "CompilerThread0" daemon [_thread_blocked, id=2644, stack(0x6d7a0000,0x6d7f0000)]
      0x6d1c0800 JavaThread "Attach Listener" daemon [_thread_blocked, id=3572, stack(0x6d750000,0x6d7a0000)]
      0x6d1d9c00 JavaThread "Signal Dispatcher" daemon [_thread_blocked, id=3568, stack(0x6d350000,0x6d3a0000)]
      0x6d1a9000 JavaThread "Finalizer" daemon [_thread_blocked, id=2376, stack(0x6d2d0000,0x6d320000)]
      0x6d1a7800 JavaThread "Reference Handler" daemon [_thread_blocked, id=3564, stack(0x6d280000,0x6d2d0000)]Other Threads:
    =>0x6d1a4000 VMThread [stack: 0x6d230000,0x6d280000] [id=2404]
      0x6debb000 WatcherThread [stack: 0x6e250000,0x6e2a0000] [id=3576]VM state:at safepoint (normal execution)VM Mutex/Monitor currently owned by a thread:  ([mutex/lock_event])
    [0x002f5838] UNKNOWN - owner thread: 0x6d1a4000
    [0x002f5c98] UNKNOWN - owner thread: 0x6de10c00Heap
     def new generation   total 72576K, used 8064K [0x02b00000, 0x079c0000, 0x0a6d0000)
      eden space 64512K,   0% used [0x02b00000, 0x02b00000, 0x06a00000)
      from space 8064K, 100% used [0x06a00000, 0x071e0000, 0x071e0000)
      to   space 8064K,   0% used [0x071e0000, 0x071e0000, 0x079c0000)
     tenured generation   total 968960K, used 968867K [0x0a6d0000, 0x45910000, 0x67500000)
       the space 968960K,  99% used [0x0a6d0000, 0x458f8f88, 0x458f9000, 0x45910000)
     compacting perm gen  total 14848K, used 14625K [0x67500000, 0x68380000, 0x6b500000)
       the space 14848K,  98% used [0x67500000, 0x683486e8, 0x68348800, 0x68380000)
    No shared spaces configured.
      

  2.   

    接上面错误内容:
    Dynamic libraries:
    0x00400000 - 0x00424000  C:\Program Files\Java\jdk1.6.0_13\bin\java.exe
    0x7c800000 - 0x7c8c0000  C:\WINDOWS\system32\ntdll.dll
    0x77e40000 - 0x77f42000  C:\WINDOWS\system32\kernel32.dll
    0x77f50000 - 0x77feb000  C:\WINDOWS\system32\ADVAPI32.dll
    0x77c50000 - 0x77cef000  C:\WINDOWS\system32\RPCRT4.dll
    0x76f50000 - 0x76f63000  C:\WINDOWS\system32\Secur32.dll
    0x7c340000 - 0x7c396000  C:\Program Files\Java\jdk1.6.0_13\jre\bin\msvcr71.dll
    0x6d8b0000 - 0x6db06000  C:\Program Files\Java\jdk1.6.0_13\jre\bin\client\jvm.dll
    0x77380000 - 0x77411000  C:\WINDOWS\system32\USER32.dll
    0x77c00000 - 0x77c48000  C:\WINDOWS\system32\GDI32.dll
    0x76aa0000 - 0x76acd000  C:\WINDOWS\system32\WINMM.dll
    0x76290000 - 0x762ad000  C:\WINDOWS\system32\IMM32.DLL
    0x7f000000 - 0x7f009000  C:\WINDOWS\system32\LPK.DLL
    0x75490000 - 0x754f5000  C:\WINDOWS\system32\USP10.dll
    0x71bc0000 - 0x71bc8000  C:\WINDOWS\system32\rdpsnd.dll
    0x771f0000 - 0x77201000  C:\WINDOWS\system32\WINSTA.dll
    0x77ba0000 - 0x77bfa000  C:\WINDOWS\system32\msvcrt.dll
    0x71c40000 - 0x71c97000  C:\WINDOWS\system32\NETAPI32.dll
    0x76b70000 - 0x76b7b000  C:\WINDOWS\system32\PSAPI.DLL
    0x6d340000 - 0x6d348000  C:\Program Files\Java\jdk1.6.0_13\jre\bin\hpi.dll
    0x6d860000 - 0x6d86c000  C:\Program Files\Java\jdk1.6.0_13\jre\bin\verify.dll
    0x6d3e0000 - 0x6d3ff000  C:\Program Files\Java\jdk1.6.0_13\jre\bin\java.dll
    0x6d8a0000 - 0x6d8af000  C:\Program Files\Java\jdk1.6.0_13\jre\bin\zip.dll
    0x6d320000 - 0x6d329000  C:\Program Files\Java\jdk1.6.0_13\jre\bin\management.dll
    0x6d3a0000 - 0x6d3b3000  C:\Program Files\Java\jdk1.6.0_13\jre\bin\net.dll
    0x71c00000 - 0x71c17000  C:\WINDOWS\system32\WS2_32.dll
    0x71bf0000 - 0x71bf8000  C:\WINDOWS\system32\WS2HELP.dll
    0x71b20000 - 0x71b61000  C:\WINDOWS\System32\mswsock.dll
    0x76ed0000 - 0x76efa000  C:\WINDOWS\system32\DNSAPI.dll
    0x76f70000 - 0x76f77000  C:\WINDOWS\System32\winrnr.dll
    0x76f10000 - 0x76f3e000  C:\WINDOWS\system32\WLDAP32.dll
    0x76f80000 - 0x76f85000  C:\WINDOWS\system32\rasadhlp.dll
    0x6e080000 - 0x6e0b5000  C:\WINDOWS\system32\rsaenh.dll
    0x76920000 - 0x769e2000  C:\WINDOWS\system32\USERENV.dll
    0x6e0c0000 - 0x6e11a000  C:\WINDOWS\system32\hnetcfg.dll
    0x71ae0000 - 0x71ae8000  C:\WINDOWS\System32\wshtcpip.dll
    0x6eab0000 - 0x6eb29000  D:\tenfore\Tenfore.dll
    0x6d870000 - 0x6d889000  D:\tenfore\TickerApi.dll
    0x6d850000 - 0x6d859000  C:\WINDOWS\system32\RPCNS4.dll
    0x6d890000 - 0x6d89b000  C:\WINDOWS\system32\NetTCPIP2.dll
    0x6ebd0000 - 0x6ebda000  C:\WINDOWS\system32\CX32.dll
    0x73eb0000 - 0x73fd1000  C:\WINDOWS\system32\MFC42.DLL
    0x77670000 - 0x777a9000  C:\WINDOWS\system32\ole32.dll
    0x77d00000 - 0x77d8b000  C:\WINDOWS\system32\OLEAUT32.dll
    0x77210000 - 0x772bb000  C:\WINDOWS\system32\WININET.dll
    0x77da0000 - 0x77df2000  C:\WINDOWS\system32\SHLWAPI.dll
    0x761b0000 - 0x76243000  C:\WINDOWS\system32\CRYPT32.dll
    0x76190000 - 0x761a2000  C:\WINDOWS\system32\MSASN1.dll
    0x71bb0000 - 0x71bb9000  C:\WINDOWS\system32\WSOCK32.dll
    0x6ec30000 - 0x6ec6d000  C:\WINDOWS\system32\ODBC32.dll
    0x77420000 - 0x77523000  C:\WINDOWS\WinSxS\x86_Microsoft.Windows.Common-Controls_6595b64144ccf1df_6.0.3790.3959_x-ww_D8713E55\COMCTL32.dll
    0x7c8d0000 - 0x7d0ce000  C:\WINDOWS\system32\SHELL32.dll
    0x762b0000 - 0x762f9000  C:\WINDOWS\system32\comdlg32.dll
    0x6f220000 - 0x6f237000  C:\WINDOWS\system32\odbcint.dll
    0x6f240000 - 0x6f249000  C:\Program Files\Java\jdk1.6.0_13\jre\bin\nio.dll
    0x76cf0000 - 0x76d0a000  C:\WINDOWS\system32\iphlpapi.dll
    0x76cd0000 - 0x76ce9000  C:\WINDOWS\system32\MPRAPI.dll
    0x76df0000 - 0x76e24000  C:\WINDOWS\system32\ACTIVEDS.dll
    0x76dc0000 - 0x76de8000  C:\WINDOWS\system32\adsldpc.dll
    0x76b80000 - 0x76bae000  C:\WINDOWS\system32\credui.dll
    0x76a80000 - 0x76a98000  C:\WINDOWS\system32\ATL.DLL
    0x76e30000 - 0x76e3c000  C:\WINDOWS\system32\rtutils.dll
    0x7e020000 - 0x7e02f000  C:\WINDOWS\system32\SAMLIB.dll
    0x770e0000 - 0x771e8000  C:\WINDOWS\system32\SETUPAPI.dll
    0x71050000 - 0x71056000  C:\Program Files\Java\jdk1.6.0_13\jre\bin\rmi.dllVM Arguments:
    jvm_args: -Dcom.sun.management.jmxremote.port=6050 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false -Xms1024m -Xmx1610m 
    java_command: Tenfore2.1.5_final_2.jar
    Launcher Type: SUN_STANDARDEnvironment Variables:
    JAVA_HOME=C:\Program Files\Java\jdk1.6.0_13
    PATH=C:\Program Files\Java\jdk1.6.0_13\bin;C:\Program Files\Java\jdk1.6.0_13\jre\bin;C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;C:\Program Files\Symantec\pcAnywhere\;D:\Program Files\MySQL\MySQL Server 5.0\bin
    USERNAME=Administrator
    OS=Windows_NT
    PROCESSOR_IDENTIFIER=x86 Family 6 Model 15 Stepping 6, GenuineIntel---------------  S Y S T E M  ---------------OS: Windows Server 2003 family Build 3790 Service Pack 2CPU:total 4 (2 cores per cpu, 1 threads per core) family 6 model 15 stepping 6, cmov, cx8, fxsr, mmx, sse, sse2, sse3, ssse3Memory: 4k page, physical 2097151k(2097151k free), swap 4194303k(4194303k free)vm_info: Java HotSpot(TM) Client VM (11.3-b02) for windows-x86 JRE (1.6.0_13-b03), built on Mar  9 2009 01:15:24 by "java_re" with MS VC++ 7.1time: Tue Apr 14 18:01:41 2009
    elapsed time: 6548 seconds
      

  3.   

    此类错误无解,99.999是jvm的问题,升级jvm到最新版本。记得是最新版!
      

  4.   

    而且从你的错误信息看到 :
    java.lang.OutOfMemoryError: requested 8192000 bytes for你的程序有很大的内存泄漏。
    如果JVM升级无用,你就老实的检查你的程序吧!
      

  5.   

    感谢java2000_net 
    JDK从1.5升级到1.6后错误依旧,
    JAVA端的程序检查过没什么问题,用Jprofile测过,没有明显的对象不释放的现象,
    我一直怀疑是JNI方面的错误,因为之前别的程序使用JNI,也出现类似的错误报告,
    请问有可能是JNI方面的错误吗 该如何检测
      

  6.   

    从错误信息看,是vc除了问题,如果有源码的话,可以看一看,实在不行,写一个测试程序看看究竟是java的问题还是java接口的问题。或者写一个C++程序调一下,也许就能弄明白问题所在。
      

  7.   

    肯定是OOM,但是不同意 版主 的无解,呵呵,如果有 heapdump 的话就可以进行分析
    到底是JVM问题还是自己程序处理是出现了内存泄露,确切的说,Java是存在内存泄露的
    heapdump的分析工具可以使用ibm的 HeapAnalyzer ,我见过的新版是 1.3.5不知道有没有出更新的,呵呵
      

  8.   

    我觉得升级JVM意义不大,使用JNI,应该还是要调查你用JNI的方式,java程序和C++的程序是不是每次都清理了内存,也有可能是C++的不合理内存占用导致java虚拟机没办法分配到足够的内存。你看看崩溃前夕你的机器整体内存情况如何,包括虚存。
      

  9.   

    我遇到过你这个问题,最后我们分析有以下几种可能:1、usb串口不稳定(计算机比较老了)。2、系统不稳定,中过病毒。3、内存泄漏,内存不够。
      

  10.   

    感谢所有回帖的朋友,后来仔细查了一下,怀疑是JAVA端的一个阻塞队列出的问题,现在修改后正在测试...
      

  11.   

    内存不够,在重启TOMCAT后就会报此类错误,在配置TOMCAT的VM时要特别注意调试,一般此类问题出现都是程序造成,可以先从程序优化开始动手
      

  12.   

    肯定不是无解咯,当然是在内存溢出的时候把堆导出来分析咯到eclipse网站上面下:MemoryAnalyzer,自己慢慢学
      

  13.   

    你是不是调用自己或者别人写的jni了.???你找native方法看看把..不是java的错