[ 
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

        

Reply via email to