[
https://issues.apache.org/jira/browse/WAVE-302?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13152175#comment-13152175
]
Michael MacFadden commented on WAVE-302:
----------------------------------------
I think this bug might be a bit misleading. Just because the exception
mentions Socket IO, doesn't mean the memory leak is in Socket IO. The only
thing the exception says is that the code was in Socket IO when the JVM ran out
of memory.
The memory leak could be anywhere. For example, suppose you have ClassA and
ClassB. ClassA has a memory leak in it. Class B doesn't have a memory leak,
but creates a new object and properly releases it. Now lets say that ClassA is
being called every so often and is slowly eating up all the memory. Now assume
that ClassA has eating up ALMOST all of the JVMs memory, but there is some
left. Now we call ClassB and it tries to grab memory for an Object, but there
isn't enough left. The OutOfMemoryError would now be thrown fro within ClassB,
even though it is not where the leak is.
Since Socket IO is a part of the code that is executed pretty much all the
time. It's possible that it is the most frequent allocator of memory. This
could raise the likelihood that if there was a leak somewhere else, it could
manifest itself in the Socket IO code.
Of course the leak could be in Socket IO itself, but the exception doesn't
directly give you any information on where the leak might be.
> Server is unstable due to OutOfmemoryEception in Socket.IO
> ----------------------------------------------------------
>
> Key: WAVE-302
> URL: https://issues.apache.org/jira/browse/WAVE-302
> Project: Wave
> Issue Type: Bug
> Components: Server
> Reporter: Yuri Zelikov
> Assignee: Vicente J. Ruiz Jurado
> Priority: Critical
>
> Turbulence message is displayed after login.
> The logs shows the following exception:
> java.lang.OutOfMemoryError: Direct buffer memory
> at java.nio.Bits.reserveMemory(Bits.java:656)
> at java.nio.DirectByteBuffer.<init>(DirectByteBuffer.java:113)
> at java.nio.ByteBuffer.allocateDirect(ByteBuffer.java:305)
> at
> org.eclipse.jetty.io.nio.DirectNIOBuffer.<init>(DirectNIOBuffer.java:46)
> at
> org.eclipse.jetty.io.AbstractBuffers.newBuffer(AbstractBuffers.java:94)
> at org.eclipse.jetty.io.PooledBuffers.getBuffer(PooledBuffers.java:70)
> at
> org.eclipse.jetty.http.AbstractGenerator.increaseContentBufferSize(AbstractGenerator.java:187)
> at org.eclipse.jetty.server.Response.setBufferSize(Response.java:986)
> at
> com.glines.socketio.server.transport.jetty.JettyContinuationTransportHandler.connect(JettyContinuationTranspo
> rtHandler.java:340)
> at
> com.glines.socketio.server.transport.AbstractHttpTransport.connect(AbstractHttpTransport.java:101)
> at
> com.glines.socketio.server.transport.AbstractHttpTransport.handle(AbstractHttpTransport.java:75)
> at
> org.waveprotocol.box.server.rpc.AbstractWaveSocketIOServlet.serve(AbstractWaveSocketIOServlet.java:164)
> at
> org.waveprotocol.box.server.rpc.AbstractWaveSocketIOServlet.doGet(AbstractWaveSocketIOServlet.java:117)
> at javax.servlet.http.HttpServlet.service(HttpServlet.java:617)
> at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
> at
> org.waveprotocol.box.server.rpc.ServerRpcProvider$WaveSocketIOServlet.service(ServerRpcProvider.java:566)
> at
> com.google.inject.servlet.ServletDefinition.doService(ServletDefinition.java:263)
> at
> com.google.inject.servlet.ServletDefinition.service(ServletDefinition.java:178)
> at
> com.google.inject.servlet.ManagedServletPipeline.service(ManagedServletPipeline.java:91)
> at
> com.google.inject.servlet.FilterChainInvocation.doFilter(FilterChainInvocation.java:62)
> at
> com.google.inject.servlet.ManagedFilterPipeline.dispatch(ManagedFilterPipeline.java:118)
> at
> com.google.inject.servlet.GuiceFilter.doFilter(GuiceFilter.java:113)
> at
> org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1333)
> at
> org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:487)
> at
> org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:119)
> at
> org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:520)
> at
> org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:233)
> at
> org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:972)
> at
> org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:417)
> at
> org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:192)
> at
> org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:906)
> at
> org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:117)
> at
> org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:110)
> at org.eclipse.jetty.server.Server.handle(Server.java:346)
> at
> org.eclipse.jetty.server.HttpConnection.handleRequest(HttpConnection.java:442)
> at
> org.eclipse.jetty.server.HttpConnection$RequestHandler.headerComplete(HttpConnection.java:910)
> at org.eclipse.jetty.http.HttpParser.parseNext(HttpParser.java:565)
> at
> org.eclipse.jetty.http.HttpParser.parseAvailable(HttpParser.java:217)
> at
> org.eclipse.jetty.server.AsyncHttpConnection.handle(AsyncHttpConnection.java:46)
> at
> org.eclipse.jetty.io.nio.SelectChannelEndPoint.handle(SelectChannelEndPoint.java:545)
> at
> org.eclipse.jetty.io.nio.SelectChannelEndPoint$1.run(SelectChannelEndPoint.java:43)
> at
> org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:598)
> at
> org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:533)
> at java.lang.Thread.run(Thread.java:679)
> 2011-11-12 03:51:05.663:DBUG:oejs.ServletHandler:[GET
> /socket.io/xhr-multipart/null]@1488755615 org.eclipse.jetty.server
> .Request@58bc9b9f
> 2011-11-12 03:51:05.663:DBUG:oejs.Server:RESPONSE
> /socket.io/xhr-multipart/null 500
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators:
https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira