[英]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.