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