failFlushed(...) should be called to fail and release all flushed messages.

Are you saying this not happens?

> Am 18.07.2016 um 22:02 schrieb Chris Conroy <[email protected]>:
> 
> I’ve been trying to track down a NIO memory leak that occurs in a Netty 
> application I am porting from Netty 3 to Netty 4. This leak does not occur in 
> the Netty 3 version of the application.
> 
> For now, I’m using only unpooled heap buffers in Netty 4, but NIO buffers do 
> come into play for socket communication.
> 
> I’ve captured a few heap dumps from affected instances, and in each it 
> appears that the leaked DirectByteBuf java objects are rooted in an 
> io.netty.util.Recycler.
> 
> These buffers remain indefinitely: I can disable the application to drain 
> traffic and force GCs, but the # of NIO buffers and NIO allocated space stays 
> flat.
> 
> The issue is likely related to slow readers. However, the leak persists long 
> after all channels have been closed.
> 
> I implemented a writability listener and the leak does appear to go away if I 
> stop writing to a channel after it goes unwritable. This is good, but I’m 
> still worried that this just makes the problem less likely since it’s still 
> possible to write/flush and have pending data: writability just limits how 
> much data will be buffered.
> 
> Digging into ChannelOutBoundBuffer I see the following stanza in close:
> 
> 
> // Release all unflushed messages.
> try {
>     Entry e = unflushedEntry;
>     while (e != null) {
>         // Just decrease; do not trigger any events via 
> decrementPendingOutboundBytes()
>         int size = e.pendingSize;
>         TOTAL_PENDING_SIZE_UPDATER.addAndGet(this, -size);
> 
>         if (!e.cancelled) {
>             ReferenceCountUtil.safeRelease(e.msg);
>             safeFail(e.promise, cause);
>         }
>         e = e.recycleAndGetNext();
>     }
> } finally {
>     inFail = false;
> }
> clearNioBuffers();
> This seems a bit curious to me: why are flushed buffers not released here? 
> Since the leak seems to be rooted in the Recycler, this could be the 
> culprit…What do you think?
> 
> -- 
> You received this message because you are subscribed to the Google Groups 
> "Netty discussions" group.
> To unsubscribe from this group and stop receiving emails from it, send an 
> email to [email protected].
> To view this discussion on the web visit 
> https://groups.google.com/d/msgid/netty/CA%2B%3DgZKADssKFcs-WCc8%2Br2RWrvbgg3csaJPdcsXL_mCD5yG2bg%40mail.gmail.com.
> For more options, visit https://groups.google.com/d/optout.

-- 
You received this message because you are subscribed to the Google Groups 
"Netty discussions" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/netty/D037D3B9-67FB-4C07-A809-8926A9B3BE20%40googlemail.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to