簡體   English   中英

netty API中的內存泄漏

[英]Memory leak in netty API

我是netty API的新手,我使用netty3.5.2來開發客戶端和服務器通信服務器,但是應用程序總是運行完整的GC,我使用jmap來轉儲內存並使用jhat來顯示哪個對象占用了內存。
並且有6413363個DefaultChannelFuture實例。 有人可以告訴哪個線程創建DefaultChannelFuture實例以及它們將如何以及何時發布?

懷疑前4個案例
6413363類org.jboss.netty.channel.DefaultChannelFuture實例
631971類org.jboss.netty.util.internal.LinkedTransferQueue$Node實例
630934類org.jboss.netty.buffer.BigEndianHeapChannelBuffer實例
org.jboss.netty.channel.DownStreamMessageEvent 630767個實例

您生成快速消息。 它使消息隊列過載。

檢查工作負荷。

這個問題現在有點老了,所以不確定你是否找到了答案。 我沒有使用它,但Netty in Action書中描述了一個檢漏儀:

Netty包含一個所謂的ResourceLeakDetector ,它將對大約1%的緩沖區分配進行采樣,以檢查應用程序中是否存在泄漏。 如果檢測到泄漏,您將看到類似於以下內容的日志消息:

泄漏:在垃圾收集之前沒有調用ByteBuf.release()。 啟用高級泄漏報告以找出泄漏發生的位置。 要啟用高級泄漏報告,請指定JVM選項

-Dio.netty.leakDetectionLevel=advanced或調用ResourceLeakDetector.setLevel()

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM