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