Skip to main content

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
[jetty-users] Memory leak with websockets

Hi,

I'm using websockets with embedded jetty and somehow the websocket related objects are not cleaned up even after closing the connection. I'm using it as follows:

@ServerEndpoint(value="/websocket/")
public class WebSocketEndpoint {
 @OnOpen
 void foo() {}

 @OnClose
 void bar() {}
}

etc. Everything is working fine, except that the endpoint objects are not getting gc'd. Looks like it is referred by ApplicationShutdownHooks or something. Following is a partial snapshot of referred objects:

this     - value: WebSocketEndpoint #1
 <- websocket     - class: org.eclipse.jetty.websocket.jsr356.endpoints.JsrAnnotatedEventDriver, value: com.oracle.ofsc.chat.endpoints.WebSocketEndpoint #1
  <- incomingHandler     - class: org.eclipse.jetty.websocket.jsr356.JsrSession, value: org.eclipse.jetty.websocket.jsr356.endpoints.JsrAnnotatedEventDriver #1
   <- _bean     - class: org.eclipse.jetty.util.component.ContainerLifeCycle$Bean, value: org.eclipse.jetty.websocket.jsr356.JsrSession #1
    <- [2]     - class: java.lang.Object[], value: org.eclipse.jetty.util.component.ContainerLifeCycle$Bean #82
     <- array     - class: java.util.concurrent.CopyOnWriteArrayList, value: java.lang.Object[] #2869
      <- _beans     - class: org.eclipse.jetty.websocket.server.WebSocketServerFactory, value: java.util.concurrent.CopyOnWriteArrayList #70
       <- webSocketServerFactory     - class: org.eclipse.jetty.websocket.jsr356.server.ServerContainer, value: org.eclipse.jetty.websocket.server.WebSocketServerFactory #1
        <- [0]     - class: java.lang.Object[], value: org.eclipse.jetty.websocket.jsr356.server.ServerContainer #1
         <- array     - class: java.util.concurrent.CopyOnWriteArrayList, value: java.lang.Object[] #2001
          <- _lifeCycles     - class: org.eclipse.jetty.util.thread.ShutdownThread, value: java.util.concurrent.CopyOnWriteArrayList #55
           <- [36]     - class: java.lang.Object[], value: org.eclipse.jetty.util.thread.ShutdownThread #1
            <- table     - class: java.util.IdentityHashMap, value: java.lang.Object[] #1084
             <- hooks (sticky class)     - class: java.lang.ApplicationShutdownHooks, value: java.util.IdentityHashMap #1

Any help is greatly appreciated. I'm trying to debug further.

Thanks,
amit

Back to the top