Netty 源码分析系列(七)字节缓冲区 ByteBuf

本文详细介绍了Netty中的两种缓冲区模式:直接缓冲区和复合缓冲区。直接缓冲区在大量I/O操作时能提高性能,但分配和释放成本较高;复合缓冲区则允许自由组合多个缓冲区,提供无复制的视图,类似于数据库的视图。通过示例代码,展示了如何使用这两种缓冲区,帮助读者深入理解Netty的ByteBuf机制。
摘要由CSDN通过智能技术生成

System.out.println(“offset:” + offset);

System.out.println(“len:” + len);

}

}

复制代码

输出结果:

array:[B@5b37e0d2

array->String:waylau

offset:0

len:6

Process finished with exit code 0

复制代码

直接缓冲区模式

直接缓冲区属于堆外分配的直接内存,不会占用堆得空间。

优点:使用 socket 传输数据时性能很好,避免了数据从 JVM 堆内存复制到直接缓冲区的过程,提高了性能。

缺点:相对于堆缓冲区而言,直接缓冲区分配内存空间和释放更为昂贵。

对于涉及大量的 I/O 数据的读写,建议使用直接缓冲区。而对于用于后端业务消息编解码模块,建议使用堆缓冲区。

以下是直接缓冲区代码示例:

public class ByteBufDirectBufferDemo {

/**

  • @param args

*/

public static void main(String[] args) {

// 创建一个直接缓冲区

ByteBuf buffer = Unpooled.directBuffer(10);

String s = “waylau”;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值