auto commit
This commit is contained in:
parent
63a3c3049c
commit
eee1684f20
@ -27,6 +27,7 @@
|
|||||||
* [6.5 接受新的连接](#65-接受新的连接)
|
* [6.5 接受新的连接](#65-接受新的连接)
|
||||||
* [6.6 删除处理过的 SelectionKey](#66-删除处理过的-selectionkey)
|
* [6.6 删除处理过的 SelectionKey](#66-删除处理过的-selectionkey)
|
||||||
* [6.7 传入的 I/O](#67-传入的-io)
|
* [6.7 传入的 I/O](#67-传入的-io)
|
||||||
|
* [7. 内存映射文件](#7-内存映射文件)
|
||||||
* [参考资料](#参考资料)
|
* [参考资料](#参考资料)
|
||||||
<!-- GFM-TOC -->
|
<!-- GFM-TOC -->
|
||||||
|
|
||||||
@ -398,6 +399,22 @@ it.remove();
|
|||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
|
## 7. 内存映射文件
|
||||||
|
|
||||||
|
内存映射文件 I/O 是一种读和写文件数据的方法,它可以比常规的基于流或者基于通道的 I/O 快得多。
|
||||||
|
|
||||||
|
只有文件中实际读取或者写入的部分才会映射到内存中。
|
||||||
|
|
||||||
|
现代操作系统一般根据需要将文件的部分映射为内存的部分,从而实现文件系统。Java 内存映射机制不过是在底层操作系统中可以采用这种机制时,提供了对该机制的访问。
|
||||||
|
|
||||||
|
向内存映射文件写入可能是危险的,仅只是改变数组的单个元素这样的简单操作,就可能会直接修改磁盘上的文件。修改数据与将数据保存到磁盘是没有分开的。
|
||||||
|
|
||||||
|
下面代码行将文件的前 1024 个字节映射到内存中,map() 方法返回一个 MappedByteBuffer,它是 ByteBuffer 的子类。因此,您可以像使用其他任何 ByteBuffer 一样使用新映射的缓冲区,操作系统会在需要时负责执行行映射。
|
||||||
|
|
||||||
|
```java
|
||||||
|
MappedByteBuffer mbb = fc.map(FileChannel.MapMode.READ_WRITE, 0, 1024);
|
||||||
|
```
|
||||||
|
|
||||||
# 参考资料
|
# 参考资料
|
||||||
|
|
||||||
- Eckel B, 埃克尔, 昊鹏, 等. Java 编程思想 [M]. 机械工业出版社, 2002.
|
- Eckel B, 埃克尔, 昊鹏, 等. Java 编程思想 [M]. 机械工业出版社, 2002.
|
||||||
|
Loading…
x
Reference in New Issue
Block a user