Java NIO 小结
来源:互联网 发布:linux中echo 编辑:程序博客网 时间:2024/06/06 21:16
1, NIO 不是来替代传统IO的,传统的IO经过改写,效率也有了很大的提升;
2,NIO的两个核心概念:Buffer 抽象类 & Channel 接口;
3,Buffer及其子类不依赖于Channel对象使用,反过来,Channel对象需要使用Buffer对象;
4,Buffer 翻译成“缓冲器”比“缓冲区”更好,前者暗示了Buffer除了维护一个底层的数据结构外,还拥有其他管理这个数据机构的功能(职责);
Java NIO 为除了boolean类型外的基本类型提供了Buffer子类,如IntBuffer.最常用的是ByteBuffer。关于Buffer的内部结构值得研究,有一些APIs专门用来维护Buffer内部的数据结构,见Java docs.
5,Buffer可以分为直接buffer和间接buffer。
JVM有自己的专属内存区域,OS也有自己的系统区域,通常JVM从外存读取一个数据,需要从OS的系统区拷贝到自己的内存区域,这是间接buffer。直接Buffer就是JVM让OS直接操作自己的内存区,不用在copy了,这样IO性能就上去了,但是如果不是非常注重性能,就不要使用直接Buffer, 因为构建一个直接Buffer也需要代价的。
ByteBuffer directByteBuffer = ByteBuffer.allocateDirect(1024); //只有ByteBuffer有此工厂方法
6,Channel 可以看成是通往某一数据源的连接,通过该连接你可以对相应的数据源进行操作。文件FileChannel 只能从FileInputStream 或者FileOutputStream中获得。
7,对比5,NIO提供了MappedByteBuffer类,该类的对象可以从Channel获得,建立起了从文件到OS内存的直接映射,只要对该对象的任何改动,就会立刻回写到磁盘文件中,由于使用的是OS的内存区而不是JVM的,加上通常情况下,JVM的读写操作最终还是要OS去执行,这就使得读写效率很高,依赖于具体的OS平台系统。
- java nio小结
- Java NIO 小结
- JAVA NIO 小结
- java nio小结
- Java NIO小结
- Java NIO小结
- Java-NIO学习小结
- Java的NIO小结
- java.nio.ByteBuffer用法小结
- java.nio.ByteBuffer用法小结
- java.nio.ByteBuffer用法小结
- java.nio.ByteBuffer用法小结
- Java NIO 的前生今世 之二 NIO Channel 小结
- java.nio(新IO)小结:
- java nio http服务器(4)小结
- NIO 与 BIO 小结
- 学习NIO小结
- Java NIO: NIO概述
- Junit使用基础总结
- ORACLE 临时表 .
- WIFI连接原理
- 使用NIO的FileChannel和ByteBuffer高效读取文件
- shell脚本调试
- Java NIO 小结
- C#密闭类
- SQL 临时表
- 03_HL7简介
- Oracle存储过程语法 .
- .Net下的加密解密大全(5):玩转对称加密
- 视讯音频标准推陈出新,谁是音频效果之霸?
- LaTeX使用--使用XeLaTeX支持中文(可以放弃Office了)
- FlexClient, MessageClient, and FlexSession