认识IO的本质
一、IO对性能的影响
首先来理解下IO对程序性能的影响:
从上面的表中可以得出的结论是:处理时间与IO时间对吞吐率的影响:把单位处理时间减半,仅能提高吞吐率2.2%。而仅仅缩短I/O延迟10%,就可使吞吐率增加9.7%;把I/O时间减半,吞吐率几乎翻番。
二、理解BIO的局限性
BIO,也称为阻塞IO,是在jdk1.4之前使用的IO模型,BIO的局限可以从下面的叙述中理解:
现在大多数基于Java的应用在处理数据上的不足在于JVM对IO处理的效率。操作系统往往发送给缓冲区的数据是块数据,而JVM的BIO类则把块数据切分为一个一个字节(或者几行文本数据)进行处理,而一次数据的拷贝需要往返几个来回。所以可见传统的BIO类在处理数据的低效。当然,BIO类也可以传送大量的数据,那就是用RandomAccessFile类。而该类提高效率的关键是使用类似于操作系统的read与write系统调用。
这就是说,只要直接使用Java本地接口编写程序,那么IO的效率是不是就能提高了呢?固然,但是直接操作本地操作系统的特性会使得程序绑定于某一类的操作系统,程序无法移植。为了保持Java跨平台的特性,Sun公司推出了java.nio包。具体其实Channel类和Selector类。
IO的操作系统解释
一、缓冲区操作
IO的基础就是缓冲区,本质上将,IO也