NIO
来源:互联网 发布:通讯软件有哪些 编辑:程序博客网 时间:2024/04/27 15:09
直接内存
在Java1.4中加入了NIO(New Input/Output),引入了一种基于通道与缓冲区的I/O方式,它可以使用Native函数直接在堆外面分配内存,然后用一个储存在堆里面的DirectByteBuffer对象作为这块内存的引用,能提高IO性能,可能会出现OutOfMemoryError异常。
I/O介绍
I/O即输入输出,指的是计算机和世界其他部分的接口,或者是单个程序同计算机其他部分的接口。I/O是计算机系统中的重要元素,并且大量的I/O实际上已经内建到操作系统中了。单独的程序通常都有很多I/O方面的工作要做。
在JAVA中,老的I/O是以“流/Stream”为基础概念,即所有的I/O都一个个单个字节的流动。在字节流中,每次一个字节,依次通过一个叫做Stream的对象。Stream I/O联系着计算机和外面的世界。Stream I/O也用在计算机内部,比如把一个对象转换成bytes或者把bytes反序列化成对象。
NIO具有和原来的老I/O相同作用和目的,但是NIO却使用了一个不同的概念--block I/O(块I/O)。在本文后面会讲到,NIO会比老的基于流的I/O更高效。
为什么使用NIO?
创建NIO的初衷是为了让JAVA开发人员在不直接使用底层本地代码的情况下实现高速的I/O操作。NIO的高效归结与它把那些耗时的I/O操作(比如读数据进入buffer,或者将buffer中的数据写入外部设备)都推给了操作系统,因此获得了很高的性能。
Streams VS blocks(流和块的比较)
老I/O和NIO之间最重要的区别在于他们不同的数据打包与传输方式。就像之前提到的,老I/O以“流”的方式处理数据,而NIO以“块”的方式处理数据。
I/O即输入输出,指的是计算机和世界其他部分的接口,或者是单个程序同计算机其他部分的接口。I/O是计算机系统中的重要元素,并且大量的I/O实际上已经内建到操作系统中了。单独的程序通常都有很多I/O方面的工作要做。
在JAVA中,老的I/O是以“流/Stream”为基础概念,即所有的I/O都一个个单个字节的流动。在字节流中,每次一个字节,依次通过一个叫做Stream的对象。Stream I/O联系着计算机和外面的世界。Stream I/O也用在计算机内部,比如把一个对象转换成bytes或者把bytes反序列化成对象。
NIO具有和原来的老I/O相同作用和目的,但是NIO却使用了一个不同的概念--block I/O(块I/O)。在本文后面会讲到,NIO会比老的基于流的I/O更高效。
为什么使用NIO?
创建NIO的初衷是为了让JAVA开发人员在不直接使用底层本地代码的情况下实现高速的I/O操作。NIO的高效归结与它把那些耗时的I/O操作(比如读数据进入buffer,或者将buffer中的数据写入外部设备)都推给了操作系统,因此获得了很高的性能。
Streams VS blocks(流和块的比较)
老I/O和NIO之间最重要的区别在于他们不同的数据打包与传输方式。就像之前提到的,老I/O以“流”的方式处理数据,而NIO以“块”的方式处理数据。
0 0
- nio
- NIO
- NIO
- nio
- NIO
- NIO
- nio
- Nio
- NIO
- NIO
- NIO
- nio
- NIO
- NIO
- NIO
- NIO
- NIO
- NIO
- HDU1260 Tickets DP
- 重定位cout到文件,不输出到屏幕
- 大表数据插入批量提交
- Activity生命周期
- Swift禁止横屏
- NIO
- python入门--基本数据类型
- [Mac技巧]非Mac键盘/PC键盘 互换Win Alt 按键功能
- Magento2 create a new module
- 如何修改Blobs Storage Size的最小值以及如何验证Blob已经被存储到自定义的Blob Store里
- Write operations are not allowed in read-only mode (FlushMode.NEVER/MANUAL): Turn your Session into
- Swift回调及notifition消息机制
- 喜!人民币入篮;忧!欧央行下调。【济南中金点评 www.zjzx01.com】
- 通过js较精确识别不同浏览器