什么是NIO?
基本概念是非阻塞IO,实际区别于BIO(阻塞IO)的通过读写缓冲区而不是字节流。
阻塞IO的三大核心是accept()、read()、write()。全是同步阻塞方法。
NIO的三大核心是selector()
NIO的三大核心概念是buffer channel selector
NIO是以块的形式读取缓冲区,相对于BIO读取字节流就要快很多。
什么是零拷贝?
首先java内存的基于java堆的,可以称为应用内存,非系统直接内存。
在IO读写时,普通的操作方法是:
网卡->系统内存->程序内存
但NIO却是通过直接操作系统缓冲区而减少了java堆到系统内存的这一复制过程,而被我们称为零拷贝。
网卡->系统内存
其中相关的术语就是DMA和kernel
如果理解的不对,请多多指正!