0
回答
Netty中EmbeddedChannel.writeInbound为什么会对引用计数减1?
注册华为云得mate10,2.9折抢先购!>>>   

        ByteBuf buf = Unpooled.buffer();
        for (int i = 0; i < 9; i++) {
            buf.writeByte(i);
        }
        ByteBuf input = buf.duplicate();
        EmbeddedChannel channel = new EmbeddedChannel(new FixedLengthFrameDecoder(3));
        assertTrue(channel.writeInbound(input.retain()));
        assertTrue(channel.finish());

        ByteBuf read = (ByteBuf) channel.readInbound();
        assertEquals(buf.readSlice(3), read);
        read.release();

 

    在黄色行,调用了input.retain()使引用计数加1,我理解这是因为channel.writeInbound()方法会使input的引用计数减1,为了确保后续依然能够使用这个ByteBuf才进行了这个操作。

    那么,有两个问题:

    1、为什么要在channel.writeInbound()方法中对引用计数进行减1?

    2、在什么情况下Netty会自动对引用计数进行减1。

举报
pinitianjie
发帖于1周前 0回/49阅
顶部