Code Review Request 6946825: com.sun.net.httpserver.HttpServer; Memory Leak on Non HTTP conform open socket

Chris Hegarty chris.hegarty at oracle.com
Wed May 5 04:14:24 PDT 2010


Hi Michael,

The Server implementation keeps a list of HttpConnection instances 
(which hold SelektionKeyImpl instances) per connection. After accepting 
a new connection a HttpConnection is created and added to the list. It 
is never removed if the request turns out to be BAD.

Other instances unnecessarily held as a result of holding the 
HttpConnection:
   sun.nio.ch.SocketChannelImpl
   sun.nio.ch.SelectionKeyImpl
   java.nio.HeapByteBuffer & [B
   sun.net.httpserver.Request$WriteStream
   sun.net.httpserver.Request$ReadStream.

The solution is to remote BAD connections from the list.

Webrev:
   http://cr.openjdk.java.net/~chegar/6946825/webrev.00/webrev/

Note: There is no regression test for this problem. The fix ( and 
problem ) was manually verified by looking at a heap histogram.

-Chris.



More information about the net-dev mailing list