为什么要使用NIO 

企业级应用效率是关键。而CPU已不再是的束缚,效率主要消耗在IO上。java.io类则喜欢一铲子一铲子地加工数据。而操作系统喜欢整卡车地运来数据,有了NIO,就可以轻松地把一卡车数据备份到您能直接使用的地方(ByteBuffer对象)。

IO的常用概念
IO操作:向操作系统发出请求,把数据移出和移入缓冲区。
用户空间:是常规进程所在区域。JVM就是常规进程,驻守于用户空间。用户空间是非特权区域:比如,在该区域执行的代码就不能直接访问硬件设备。硬件通常不能直接访问用户空间。
内核空间:它能与设备控制器通讯,控制着用户区域进程的运行状态等等。最重要的是,所有I/O都直接或间接通过内核空间。在数据往来于用户空间与存储设备的过程中,内核负责数据的分解、再组合工作,因此充当着中间人的角色。
虚拟内存:意为使用虚假(或虚拟)地址取代物理(硬件RAM)内存地址
通道(Channel):Channel用于在字节缓冲区和位于通道另一侧的实体(通常是一个文件或套接字)之间有效地传输数据。
Socket:用于描述IP地址和端口。socket实质上提供了进程通信的端点。进程通信之前,双方首先必须各自创建一个端点,否则是没有办法建立联系并相互通信的。
DMA(Direct Memory Access,直接内存存取) 他允许不同速度的硬件装置来沟通.
内存分页:将一个页面分成两个或两个以上的页面。其中几个装入内存,其余存储于磁盘。