Re:java.lang.OutOfMemoryError:为ChunkP请求了32756个字节

时间:2011-09-28 09:49:23

标签: java

我一直致力于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]

任何人都可以找到问题所在并帮助我如何避免这种情况。

4 个答案:

答案 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分析器来分析它。