我一直致力于java项目功能增强。完成项目后,我可以将其部署到生产服务器中。但是我在访问生产中的应用程序时在日志文件中收到此错误。我使用的是tomcat 7,jdk 6update 16。
A fatal error has been detected by the Java Runtime Environment:
java.lang.OutOfMemoryError: requested 32756 bytes for ChunkPool::allocate. Out of swap space?
Internal Error (allocation.cpp:117), pid=17388, tid=38580
Error: ChunkPool::allocate
JRE version: 6.0_22-b04
Java VM: Java HotSpot(TM) Client VM (17.1-b03 mixed mode windows-x86 )
If you would like to submit a bug report, please visit:
http://java.sun.com/webapps/bugreport/crash.jsp
Current thread (0x022eb000): JavaThread "CompilerThread0" daemon [_thread_in_native, id=38580, stack(0x4a950000,0x4a9a0000)]
Stack: [0x4a950000,0x4a9a0000], sp=0x4a99f760, free space=13d4a99f770k
Native frames: (J=compiled Java code, j=interpreted, Vv=VM code, C=native code)
V [jvm.dll+0x1fd0f0]
V [jvm.dll+0xa471c]
V [jvm.dll+0x27b6]
V [jvm.dll+0x29b2]
V [jvm.dll+0x2bb3]
V [jvm.dll+0x53881]
V [jvm.dll+0x53b38]
V [jvm.dll+0x5577c]
V [jvm.dll+0x56626]
V [jvm.dll+0x5686a]
V [jvm.dll+0x28317]
V [jvm.dll+0x283b8]
V [jvm.dll+0x28524]
V [jvm.dll+0x28634]
V [jvm.dll+0x88399]
V [jvm.dll+0x88edf]
V [jvm.dll+0x1e7004]
V [jvm.dll+0x185f3c]
C [msvcr71.dll+0x9565]
C [kernel32.dll+0x1339a]
C [ntdll.dll+0x39ed2]
任何人都可以找到问题所在并帮助我如何避免这种情况。
答案 0 :(得分:0)
java.lang.OutOfMemoryError: requested 32756 bytes
32756块只是最后一根稻草;这是OOM错误,这是你的问题。
启动时,您的JVM内存设置是什么?
启动时将VisualVM 1.3.2附加到Tomcat进程。您将能够看到整个世代内存布局,线程等。
答案 1 :(得分:0)
您为tomcat服务器定义的当前内存设置是什么?
尝试在catalina.sh中设置CATALINA_OPTS
export CATALINA_OPTS =“ - Xms512m -Xmx1024m”
答案 2 :(得分:0)
在谷歌上进行一些简短的搜索让我相信这与JIT编译器有关。您的服务器上运行了多少服务?它是32位操作系统吗?
请仔细阅读此链接:http://www.codingthearchitecture.com/2008/01/14/jvm_lies_the_outofmemory_myth.html
您的Java VM启动参数是什么?
答案 3 :(得分:0)
如果我没记错,通常使用Tomcat(6),当你达到Xmx内存上限时,你不会得到这个热点错误。根据我的经验,当JVM无法从O / S分配更多内存时就会发生这种情况,即使它应该被“允许”。您是否有可能没有足够的可用内存来分配给JVM?
如果不是这种情况,您将需要在发生错误时检查内存。如果您无法实时附加分析器,可以将标志-XX:+HeapDumpOnOutOfMemoryError
和-XX:HeapDumpPath=/path/to/dumps
添加到CATALINA_OPTS,然后当系统下一次抛出OOM时,它会将其堆转储到该文件夹指定。然后,您可以使用http://visualvm.java.net/或类似的Java分析器来分析它。