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”;