说明
io.netty.buffer.ByteBuf的函数isDirect()可以判断该ByteBuf底层是否被NIO direct buffer支撑。如果结果返回true,表示底层被NIO direct buffer支撑。
示例
package com.thb;
import io.netty.buffer.ByteBuf;
import io.netty.buffer.ByteBufAllocator;
import io.netty.buffer.Unpooled;
public class Test {
public static void main(String[] args) {
// 创建一个ByteBuf
ByteBuf buf = Unpooled.buffer();
// 查看buf的具体类名
System.out.println("buf.getClass().getName(): " + buf.getClass().getName());
// 判断是否direct
System.out.println("buf.isDirect: " + buf.isDirect());
System.out.println();
// 另外一种分配ByteBuf的方法
ByteBuf buf2 = ByteBufAllocator.DEFAULT.buffer();
System.out.println("buf2.getClass().getName(): " + buf2.getClass().getName());
System.out.println("buf2.isDirect: " + buf2.isDirect());
}
}
运行输出:
buf.getClass().getName(): io.netty.buffer.UnpooledByteBufAllocator$InstrumentedUnpooledUnsafeHeapByteBuf
buf.isDirect: false
buf2.getClass().getName(): io.netty.buffer.PooledUnsafeDirectByteBuf
buf2.isDirect: true