Netty 4.1.45 происходит утечка памяти - PullRequest
0 голосов
/ 30 января 2020

NettyClient. java

public void client(String Host, int Port, String msg, HashMap<String, String> map) throws Exception{

        EventLoopGroup group = new NioEventLoopGroup();

        try {
            Bootstrap b = new Bootstrap();
            b.group(group)
                .channel(NioSocketChannel.class)
                .option(ChannelOption.TCP_NODELAY, true)
                .handler(new ChannelInitializer<SocketChannel>() {
                    @Override
                    protected void initChannel(SocketChannel sc) throws Exception{
                        ChannelPipeline cp = sc.pipeline();
                        cp.addLast(new nettyClientHandler(msg, map));
                    }
                });

            ChannelFuture cf = b.connect(Host, Port).sync();
            cf.channel().closeFuture().sync();
        }catch(Exception e) {
            e.printStackTrace();
        }finally {
            Future<?> fc = group.shutdownGracefully();
            try {
                fc.await();
            } catch (InterruptedException e) {
                throw new RuntimeException(e);
            }
        }

Я использовал Memory Analyzer (MAT), чтобы найти утечку памяти. И я знал, что java .lang.ref.Finalizer использует большую память.

MAT result

Как это исправить?

...