说明
Netty的ByteBuf有一个对它本身的引用计数。
可以通过ByteBuf的retain()增加1个引用计数,通过retain(int increment)增加一定数量的引用计数。
通过release()减少1个引用计数,通过release(int decrement)减少一定数量的引用计数。
通过refCnt()查看对它本身的引用计数。
代码示例
package com.thb;
import io.netty.buffer.ByteBuf;
import io.netty.buffer.Unpooled;
public class Test {
public static void main(String[] args) {
ByteBuf buf = Unpooled.buffer(5);
//ByteBuf buf = ByteBufAllocator.DEFAULT.buffer(5);
// 查看ByteBuf初始引用数
System.out.println("ByteBuf的初始引用计数:" + buf.refCnt());
for (int i = 0; i < 5; i++) {
buf.writeByte(0x68);
}
// 将ByteBuf引用数增加一个
buf.retain();
// 查看此时ByteBuf初始引用数
System.out.println("引用计数增加1个后,ByteBuf的引用计数:" + buf.refCnt());
// 将ByteBuf引用数减少一个
buf.release();
// 查看此时ByteBuf初始引用数
System.out.println("引用计数减少1个后,ByteBuf的引用计数:" + buf.refCnt());
// 将ByteBuf引用数减少一个
buf.release();
// 查看此时ByteBuf初始引用数
System.out.println("引用计数再减少1个后,ByteBuf的引用计数:" + buf.refCnt());
}
}
运行输出: