内存空间
PC的内存由两部分组成:内核空间和用户空间。内核空间只由操作系统使用;用户空间由其他的进程,比如我们自己开发的应用来使用。
io瓶颈
由于网络请求、磁盘请求等接口,全都由操作系统提供,不能由我们自己的应用程序来直接操作,因此,每次网络请求发出去的数据都是先由用户空间复制到内核空间,再由操作系统底层发送出去;网络请求的数据也是先接收到内核空间,再赋值到应用程序可以操作的用户空间。这样虽然确保了整个操作系统和应用程序的安全性和稳定性,但是,这也是造成io瓶颈的一部分原因。从磁盘读取文件等资源时,也是类似的,先到内核空间,再到用户空间
虚拟内存
所谓的虚拟内存,其实时用作应用程序之间的内存共享。可以映射为一段内存空间,也可以映射为磁盘空间。
NIO
java的nio技术,就是为了解决内核空间到用户空间的2次io而实现的一套解决方案。
其实也就是说通过java的nio技术,可以直接使用内核空间的内存,将内核空间作为数据缓冲区来使用。