3.NIO_Buffer缓冲区
?1.緩沖區(Buffer)
一個用于特定基本數據類型的容器。由 java.nio 包定義的,所有緩沖區都是 Buffer 抽象類的子類,任何時候訪問 NIO 中
的數據,都是通過緩沖區進行操作
在 Java NIO 中負責數據的存取。緩沖區就是數組。用于存儲不同數據類型的數據,據數據類型不同(boolean 除外) ,有以
下 Buffer 常用子類:
上述緩沖區的管理方式幾乎一致,通過 allocate() 獲取緩沖區:
1.1.緩沖區的基本屬性
標記、位置、限制、容量遵守以下不變式: 0 <= mark <= position <= limit <= capacity
1.2.緩沖區的常用方法:
1.2.緩沖區的數據操作:
Buffer 所有子類提供了兩個用于數據操作的方法:get() 與 put() 方法
1.3.直接緩沖區和非直接緩沖區:
非直接緩沖區:通過 allocate() 方法分配緩沖區,將緩沖區建立在 JVM 的內存中
?? 直接緩沖區:通過 allocateDirect() 方法分配直接緩沖區,將緩沖區建立在物理內存中,可以提高效率
?
NIO技術省去了復制的過程
@Test
public void test3(){
//分配直接緩沖區
ByteBuffer buf = ByteBuffer.allocateDirect(1024);
System.out.println(buf.isDirect());
}
字節緩沖區是直接緩沖區還是非直接緩沖區可通過調用其 isDirect() 方法來確定。提供此方法是為了能夠在
性能關鍵型代碼中執行顯式緩沖區管理
直接字節緩沖區還可以通過 FileChannel 的 map() 方法 將文件區域直接映射到內存中來創建。該方法返回
MappedByteBuffer
?
?
?
?
轉載于:https://www.cnblogs.com/yaboya/p/9172154.html
總結
以上是生活随笔為你收集整理的3.NIO_Buffer缓冲区的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 如何查看机器是否为vmware虚拟机
- 下一篇: js实现txt/excel文件下载