java.lang.outofmemoryerror gc overhead limit exceeded

场景:java.lang.OutOfMemoryError: GC overhead limit exceeded

Linux 下 resin 发生异常,求大神指点
这个日志是在/opt/resin4/log 下面的jvm-default.log中的
发生异常后,运行在resin容器中的程序就会死掉。。。。。找不到解决办法了。。

刚开发会出现如下的日志信息:
[11-08-15 00:59:43.760] {main} 
[11-08-15 00:59:43.761] {main} Linux 2.6.9-11.ELsmp i386
[11-08-15 00:59:43.762] {main} Java(TM) SE Runtime Environment 1.6.0_24-b07, GB18030, zh
[11-08-15 00:59:43.762] {main} Java HotSpot(TM) Server VM 19.1-b02, 32, mixed mode, Sun Microsystems Inc.
[11-08-15 00:59:43.763] {main} 
[11-08-15 00:59:43.763] {main} user.name = root
[11-08-15 00:59:43.849] {main} 
[11-08-15 00:59:43.869] {main} server listening to localhost.localdomain:6800
[11-08-15 00:59:43.922] {main} 
[11-08-15 00:59:44.521] {main} 
[11-08-15 00:59:44.521] {main} resin.home = /opt/resin4/
[11-08-15 00:59:44.521] {main} resin.root = /opt/resin4/
[11-08-15 00:59:44.522] {main} resin.conf = /opt/resin4/conf/resin.xml
[11-08-15 00:59:44.522] {main} 
[11-08-15 00:59:44.522] {main} server = 127.0.0.1:6800 (app-tier:default)
[11-08-15 00:59:44.522] {main} stage = production
[11-08-15 00:59:51.774] {main} Server[id=default,cluster=app-tier] active
[11-08-15 00:59:51.774] {main} 
[11-08-15 00:59:51.775] {main} http listening to *:xx
[11-08-15 00:59:53.617] {main} https listening to *:xxxx
[11-08-15 00:59:54.008] {main} 
[11-08-15 00:59:54.009] {main} Resin[id=default] started in 13185ms
[11-08-15 08:39:54.467] {http://*:82-7} com.caucho.server.dispatch.BadRequestException: com.caucho.vfs.SocketTimeoutException: client timeout
[11-08-15 08:39:54.468] {http://*:82-7} com.caucho.vfs.SocketTimeoutException: client timeout
[11-08-15 09:16:19.253] {http://*:82-1} com.caucho.server.dispatch.BadRequestException: com.caucho.vfs.SocketTimeoutException: client timeout
[11-08-15 09:16:19.253] {http://*:82-1} com.caucho.vfs.SocketTimeoutException: client timeout

然后就会报下面的异常:
[11-08-14 07:19:47.149] {main} 
[11-08-14 07:19:47.150] {main} Linux 2.6.9-11.ELsmp i386
[11-08-14 07:19:47.150] {main} Java(TM) SE Runtime Environment 1.6.0_24-b07, GB18030, zh
[11-08-14 07:19:47.151] {main} Java HotSpot(TM) Server VM 19.1-b02, 32, mixed mode, Sun Microsystems Inc.
[11-08-14 07:19:47.151] {main} 
[11-08-14 07:19:47.151] {main} user.name = root
[11-08-14 07:19:47.262] {main} 
[11-08-14 07:19:47.282] {main} server listening to localhost.localdomain:6800
[11-08-14 07:19:47.309] {main} 
[11-08-14 07:19:48.102] {main} 
[11-08-14 07:19:48.103] {main} resin.home = /opt/resin4/
[11-08-14 07:19:48.103] {main} resin.root = /opt/resin4/
[11-08-14 07:19:48.104] {main} resin.conf = /opt/resin4/conf/resin.xml
[11-08-14 07:19:48.104] {main} 
[11-08-14 07:19:48.105] {main} server = 127.0.0.1:6800 (app-tier:default)
[11-08-14 07:19:48.105] {main} stage = production
[11-08-14 07:19:55.952] {main} Server[id=default,cluster=app-tier] active
[11-08-14 07:19:55.954] {main} 
[11-08-14 07:19:55.955] {main} http listening to *:xx
[11-08-14 07:19:58.154] {main} https listening to *:xxx3
[11-08-14 07:19:58.214] {main} 
[11-08-14 07:19:58.215] {main} Resin[id=default] started in 14028ms
java.lang.OutOfMemoryError: GC overhead limit exceeded
[11-08-14 07:21:49.169] {http://*:82-1} java.lang.OutOfMemoryError: GC overhead limit exceeded
[11-08-14 07:21:52.034] {http://*:82-1} java.lang.RuntimeException: java.lang.OutOfMemoryError: GC overhead limit exceeded
  at com.caucho.server.host.DomainName.fromAscii(DomainName.java:109)
  at com.caucho.server.host.HostContainer.buildInvocation(HostContainer.java:310)
  at com.caucho.server.cluster.Server.buildInvocation(Server.java:911)
  at com.caucho.server.dispatch.InvocationServer.buildInvocation(InvocationServer.java:247)
  at com.caucho.server.dispatch.InvocationServer.buildInvocation(InvocationServer.java:220)
  at com.caucho.server.http.AbstractHttpRequest.buildInvocation(AbstractHttpRequest.java:1472)
  at com.caucho.server.http.AbstractHttpRequest.getInvocation(AbstractHttpRequest.java:1445)
  at com.caucho.server.http.HttpRequest.handleRequest(HttpRequest.java:779)
  at com.caucho.network.listen.TcpSocketLink.dispatchRequest(TcpSocketLink.java:730)
  at com.caucho.network.listen.TcpSocketLink.handleRequest(TcpSocketLink.java:689)
  at com.caucho.network.listen.TcpSocketLink.handleRequestsImpl(TcpSocketLink.java:669)
  at com.caucho.network.listen.TcpSocketLink.handleRequests(TcpSocketLink.java:617)
  at com.caucho.network.listen.AcceptTask.doTask(AcceptTask.java:104)
  at com.caucho.network.listen.ConnectionReadTask.runThread(ConnectionReadTask.java:98)
  at com.caucho.network.listen.ConnectionReadTask.run(ConnectionReadTask.java:81)
  at com.caucho.network.listen.AcceptTask.run(AcceptTask.java:67)
  at com.caucho.env.thread.ResinThread.runTasks(ResinThread.java:164)
  at com.caucho.env.thread.ResinThread.run(ResinThread.java:130)
  Caused by: java.lang.OutOfMemoryError: GC overhead limit exceeded
  at com.caucho.vfs.AbstractPrintWriter.<init>(AbstractPrintWriter.java:45)
  at com.caucho.server.http.ResponseWriter.<init>(ResponseWriter.java:48)
  at com.caucho.server.http.AbstractHttpResponse.<init>(AbstractHttpResponse.java:88)
  at com.caucho.server.http.HttpResponse.<init>(HttpResponse.java:81)
  at com.caucho.server.http.HttpRequest.createResponse(HttpRequest.java:129)
  at com.caucho.server.http.HttpRequest.createResponse(HttpRequest.java:61)
  at com.caucho.server.http.AbstractHttpRequest.<init>(AbstractHttpRequest.java:196)
  at com.caucho.server.http.HttpRequest.<init>(HttpRequest.java:117)
  at com.caucho.server.http.HttpProtocol.createConnection(HttpProtocol.java:53)
  at com.caucho.network.listen.TcpSocketLink.<init>(TcpSocketLink.java:134)
  at com.caucho.network.listen.TcpSocketLinkListener.allocateConnection(TcpSocketLinkListener.java:1543)
  at com.caucho.network.listen.SocketLinkThreadLauncher.launchChildThread(SocketLinkThreadLauncher.java:72)
  at com.caucho.env.thread.AbstractThreadLauncher.startConnection(AbstractThreadLauncher.java:372)
  at com.caucho.env.thread.AbstractThreadLauncher.runTask(AbstractThreadLauncher.java:403)
  at com.caucho.env.thread.AbstractTaskWorker.run(AbstractTaskWorker.java:160)
  at com.caucho.env.thread.ResinThread.runTasks(ResinThread.java:164)
  at com.caucho.env.thread.ResinThread.run(ResinThread.java:130)
WarningService: java.lang.OutOfMemoryError: GC overhead limit exceeded
[11-08-14 07:21:52.107] {resin-port-null:-1} WarningService: java.lang.OutOfMemoryError: GC overhead limit exceeded
[11-08-14 07:21:52.107] {resin-port-null:-1} java.lang.OutOfMemoryError: GC overhead limit exceeded
  at com.caucho.vfs.AbstractPrintWriter.<init>(AbstractPrintWriter.java:45)
  at com.caucho.server.http.ResponseWriter.<init>(ResponseWriter.java:48)
  at com.caucho.server.http.AbstractHttpResponse.<init>(AbstractHttpResponse.java:88)
  at com.caucho.server.http.HttpResponse.<init>(HttpResponse.java:81)
  at com.caucho.server.http.HttpRequest.createResponse(HttpRequest.java:129)
  at com.caucho.server.http.HttpRequest.createResponse(HttpRequest.java:61)
  at com.caucho.server.http.AbstractHttpRequest.<init>(AbstractHttpRequest.java:196)
  at com.caucho.server.http.HttpRequest.<init>(HttpRequest.java:117)
  at com.caucho.server.http.HttpProtocol.createConnection(HttpProtocol.java:53)
  at com.caucho.network.listen.TcpSocketLink.<init>(TcpSocketLink.java:134)
  at com.caucho.network.listen.TcpSocketLinkListener.allocateConnection(TcpSocketLinkListener.java:1543)
  at com.caucho.network.listen.SocketLinkThreadLauncher.launchChildThread(SocketLinkThreadLauncher.java:72)
  at com.caucho.env.thread.AbstractThreadLauncher.startConnection(AbstractThreadLauncher.java:372)
  at com.caucho.env.thread.AbstractThreadLauncher.runTask(AbstractThreadLauncher.java:403)
  at com.caucho.env.thread.AbstractTaskWorker.run(AbstractTaskWorker.java:160)
  at com.caucho.env.thread.ResinThread.runTasks(ResinThread.java:164)
  at com.caucho.env.thread.ResinThread.run(ResinThread.java:130)
Resin-4.0.16 (built Thu, 17 Mar 2011 04:09:21 PDT)

------解决方案--------------------
[11-08-14 07:21:52.107] {resin-port-null:-1} WarningService: java.lang.OutOfMemoryError: GC overhead limit exceeded
[11-08-14 07:21:52.107] {resin-port-null:-1} java.lang.OutOfMemoryError: GC overhead limit exceeded

内存溢出了,把内存设大点,貌似内存回收有限制?
------解决方案--------------------
以前看过一篇文章 好像是因为堆空间太小了,可以添加JVM的启动参数来限制使用内存。
看下这个,希望有帮助:


http://blog.****.net/forandever/article/details/5717890