写了一个长连接服务,但是在压测的时候发现,内存一直不回收。在消息发送完毕之后,CPU的使用率都W为0的情况,通过jhat来分析内存,发现临时变量都没有自动回收。
这应该如何定位呢?一般的思路是怎样的呢?
611984 instances of class io.netty.util.Recycler$DefaultHandle
313739 instances of class java.util.LinkedHashMap$Entry
313330 instances of class io.netty.channel.DefaultChannelPromise
284032 instances of class io.netty.util.concurrent.DefaultPromise$CauseHolder
282249 instances of class io.netty.buffer.PooledUnsafeDirectByteBuf
282247 instances of class io.netty.channel.ChannelOutboundBuffer$Entry
282246 instances of class io.netty.channel.group.DefaultChannelGroupFuture$DefaultEntry
181337 instances of class java.nio.DirectByteBuffer
141312 instances of class io.netty.buffer.PoolThreadCache$MemoryRegionCache$Entry
108703 instances of class io.netty.handler.codec.http.websocketx.TextWebSocketFrame
107611 instances of class io.netty.buffer.DuplicatedByteBuf
100652 instances of class [C
81179 instances of class io.netty.util.internal.MpscLinkedQueue$DefaultNode
60142 instances of class java.lang.String
47476 instances of class io.netty.channel.DefaultChannelHandlerInvoker$WriteTask
35761 instances of class [Lio.netty.util.Recycler$DefaultHandle;
35731 instances of class io.netty.util.Recycler$WeakOrderQueue$Link
30169 instances of class java.lang.StackTraceElement
15686 instances of class [Ljava.lang.Object;
14932 instances of class [I
14464 instances of class java.lang.Object
13527 instances of class [B
12780 instances of class java.lang.StringBuilder
11014 instances of class java.util.HashMap$Node
9835 instances of class java.lang.reflect.Method
8008 instances of class io.netty.buffer.PoolSubpage
7876 instances of class [J
7107 instances of class java.util.Hashtable$Entry
6470 instances of class java.lang.StringBuffer