Netty
  1. Netty
  2. NETTY-424

java.lang.OutOfMemoryError: Direct buffer memory

    Details

    • Type: Bug Bug
    • Status: Open Open (View Workflow)
    • Priority: Major Major
    • Resolution: Unresolved
    • Affects Version/s: 3.2.2.Final
    • Fix Version/s: None
    • Component/s: Bootstrap
    • Labels:
      None
    • Environment:
      Linux 2.6.18-128.el5xen
      Java HotSpot(TM) 64-Bit Server VM 1.6.0_18-b07
    • Similar Issues:
      Show 10 results 

      Description

      • Test:
        for (int i = 0; i < Integer.MAX_VALUE; i ++) {
            ChannelFactory channelFactory = new NioClientSocketChannelFactory(
                    Executors.newCachedThreadPool(), Executors.newCachedThreadPool());
            Bootstrap bootstrap = new ClientBootstrap(channelFactory);
            bootstrap.setPipelineFactory(new ChannelPipelineFactory() { ... });
            ChannelFuture future = bootstrap.connect(serverAddress);
            future.await(); // or future.addListener(new ChannelFutureListener() { ... }); 
            Channel channel = future.getChannel();
            channel.close();
            // FIXME NioClientSocketChannelFactory direct buffer memory leak
            channelFactory.releaseExternalResources(); // or bootstrap.releaseExternalResources();
        }
        
      • Circumvent:
        static NioClientSocketChannelFactory
      • Exception:

        Caused by: java.lang.OutOfMemoryError: Direct buffer memory
        at java.nio.Bits.reserveMemory(Bits.java:633)
        at java.nio.DirectByteBuffer.<init>(DirectByteBuffer.java:95)
        at java.nio.ByteBuffer.allocateDirect(ByteBuffer.java:288)
        at org.jboss.netty.channel.socket.nio.SocketSendBufferPool$Preallocation.<init>(SocketSendBufferPool.java:159)
        at org.jboss.netty.channel.socket.nio.SocketSendBufferPool.<init>(SocketSendBufferPool.java:46)
        at org.jboss.netty.channel.socket.nio.NioWorker.<init>(NioWorker.java:84)
        at org.jboss.netty.channel.socket.nio.NioClientSocketPipelineSink.<init>(NioClientSocketPipelineSink.java:74)
        at org.jboss.netty.channel.socket.nio.NioClientSocketChannelFactory.<init>(NioClientSocketChannelFactory.java:135)

        Activity

        Hide
        Trustin Lee
        added a comment -

        ChannelFactories are never meant to be created many times. JVM is poor at managing direct buffers, so there's no way to fix this problem without using JNI. One possible workaround would be call System.gc() explicitly, but I'm not sure it's a reliable workaround.

        Show
        Trustin Lee
        added a comment - ChannelFactories are never meant to be created many times. JVM is poor at managing direct buffers, so there's no way to fix this problem without using JNI. One possible workaround would be call System.gc() explicitly, but I'm not sure it's a reliable workaround.
        Hide
        mini saw
        added a comment -

        we are facing the same problem, and request to have it configurable whether NETTY uses direct buffers or heap buffers.

        Show
        mini saw
        added a comment - we are facing the same problem, and request to have it configurable whether NETTY uses direct buffers or heap buffers.
        Hide
        Trustin Lee
        added a comment -

        I agree it should be more configurable. I'm thinking of providing some buffer pools and let user specify it. Please stay tuned.

        Show
        Trustin Lee
        added a comment - I agree it should be more configurable. I'm thinking of providing some buffer pools and let user specify it. Please stay tuned.
        Hide
        Stan Campbell
        added a comment -

        Doesn't look like there's been any progress on this? Is there a known workaround?

        Show
        Stan Campbell
        added a comment - Doesn't look like there's been any progress on this? Is there a known workaround?

          People

          • Assignee:
            Trustin Lee
            Reporter:
            liangfei liang
          • Votes:
            4 Vote for this issue
            Watchers:
            9 Start watching this issue

            Dates

            • Created:
              Updated: