ThinkChat2.0新版上线,更智能更精彩,支持会话、画图、阅读、搜索等,送10W Token,即刻开启你的AI之旅 广告
> 本节介绍缓冲区的操作中,ByteBuffer的一些用法。 ## ByteBuffer - 分配直接内容 - 包装wrap数据的处理 ### 缓冲区操作 使用allocateDirect()方法创建的直接缓冲区如何释放内存呢?有两种办法,一种是手动释放空间,另一种就是交给JVM进行处理。 java进程分配直接缓冲区,在java进程结束后也不会马上回收内存,而是会在某个时刻触发GC垃圾回收器进行内存的回收。 #### 压缩缓冲区 使用compact()可以进行缓冲区压缩。 ![](https://gitee.com/cowboy2014/cloud2020-config/raw/master//pictures/20210502110712.png) #### order(ByteOrder bo)方法 作用:设置字节的排列顺序。 不同的CPU在读取字节时的顺序是不一样的,有的CPU从高位开始读,而有的CPU从低位开始读,当这两种CPU传递数据时就要将字节排列的顺序进行统一。 > 字节顺序 > ByteOrder order()方法的作用:获取此缓冲区的字节顺序。新创建的字节缓冲区的顺序始终为BIG_ENDIAN。在读写多字节值以及为此字节缓冲区创建视图缓冲区时,使用该字节顺序。 > 1. `public static final ByteOrder BIG_ENDIAN`:表示BIG-ENDIAN字节顺序的常量。按照此顺序,多字节值的字节顺序是从最高有效位到最低有效位的。 > 2. `public static final ByteOrder LITTLE_ENDIAN`:表示LITTLE-ENDIAN字节顺序的常量。按照此顺序,多字节值的字节顺序是从最低有效位到最高有效位的 #### 比较缓冲区的内容 比较缓冲区的内容是否相同有两种方法:equals()和compareTo()。