netty ByteBuf 种类
所属分类 netty
浏览量 92
池化与非池化:
Pooled:池化的 ByteBuf,使用内存池来管理内存,适用于高并发场景,可以减少内存分配和回收的开销。
Unpooled:非池化的 ByteBuf,不使用内存池,直接从堆内存或直接内存中分配内存,适用于低并发或内存需求不高的场景。
堆内存与直接内存:
Heap:堆内存的 ByteBuf,数据存储在JVM的堆空间中,通过数组实现。
Direct:直接内存的 ByteBuf,数据存储在操作系统的堆外内存中,不依赖于JVM的垃圾回收机制,适用于需要高性能的场景。
安全与非安全:
Safe:安全的 ByteBuf,提供了对内存操作的保护,防止非法访问。
Unsafe:非安全的 ByteBuf,直接操作内存,性能较高,但需要小心使用,避免非法访问导致的内存问题。
ByteBuf byteBuf = ByteBufAllocator.DEFAULT.buffer(10);
ByteBuf byteBuf = Unpooled.buffer(10);
public final class Unpooled {
private static final ByteBufAllocator ALLOC;
static {
ALLOC = UnpooledByteBufAllocator.DEFAULT;
}
public static ByteBuf buffer(int initialCapacity) {
return ALLOC.heapBuffer(initialCapacity);
}
public static ByteBuf directBuffer() {
return ALLOC.directBuffer();
}
}
public interface ByteBufAllocator {
ByteBufAllocator DEFAULT = ByteBufUtil.DEFAULT_ALLOCATOR;
...
}
public final class ByteBufUtil {
static final ByteBufAllocator DEFAULT_ALLOCATOR;
static {
//1.分配类型
String allocType = SystemPropertyUtil.get("io.netty.allocator.type", PlatformDependent.isAndroid() ? "unpooled" : "pooled");
//2.根据类型,创建不同的分配器
Object alloc;
if ("unpooled".equals(allocType)) {
alloc = UnpooledByteBufAllocator.DEFAULT;
} else if ("pooled".equals(allocType)) {
alloc = PooledByteBufAllocator.DEFAULT;
} else {
alloc = PooledByteBufAllocator.DEFAULT;
}
DEFAULT_ALLOCATOR = (ByteBufAllocator)alloc;
}
}
池化 + 堆内存,PooledHeapByteBuf;
池化 + 直接内存,PooledDirectByteBuf;
池化 + 堆内存 + 不安全,PooledUnsafeHeapByteBuf;
池化 + 直接内存 + 不安全,PooledUnsafeDirectByteBuf;
非池化 + 堆内存,UnpooledHeapByteBuf;
非池化 + 直接内存,UnpooledDirectByteBuf;
非池化 + 堆内存 + 不安全,UnpooledUnsafeHeapByteBuf;
非池化 + 直接内存 + 不安全,UnpooledUnsafeDirectByteBuf
PooledDirectByteBuf 堆外内存
PooledHeapByteBuf 堆内内存
PooledUnsafeDirectByteBuf 不安全的堆外内存
public static final PooledByteBufAllocator DEFAULT =
new PooledByteBufAllocator(PlatformDependent.directBufferPreferred());
PooledByteBuf< T> extends AbstractReferenceCountedByteBuf extends AbstractByteBuf extends ByteBuf
public abstract class ByteBuf implements ReferenceCounted, Comparable< ByteBuf>
上一篇
下一篇
MQTT协议总结
小学数学学习资料收集
netty学习资料汇总
netty ByteToMessageDecoder
netty解码器实例
Netty EventLoop