NIO 与 零拷贝
零拷贝基本介绍
零拷贝是网络编程的关键, 很多性能优化都离不开
在Java程序中, 常用的零拷贝有mmap(内存映射) 和 sendFile....我们分析mmap和sendFile这两个零拷贝
另外我们看一下NIO中如何使用零拷贝
传统IO数据读写
Java传统IO和网络编程的一段代码
传统IO模型
DMA : direct memory access..., 是没有CPU拷贝的
Linux 在2.4 版本中, 做了一些修改, 避免了从内核缓冲区拷贝到SocketBuffer, 的操作,直接拷贝到协议栈,从而再一次减少了数据拷贝,具体如下图和小结
这里其实有一次...I/O,即AIO ,在进行IO编程中,常用到两种模式:Reactor 和 Proactor, Java 的NIO就是Reactor,,当有事件触发时,服务器端得到通知进行相应的处理
AIO 即NIO2.0..., 叫异步非阻塞IO, AIO引入异步通道的概念,采用了Proactor模式,简化了程序编写,有效的请求才启动线程,他的特点是,先由操作系统完成后才通知服务端程序启动线程去处理,一般适用于连接数较多,且连接时间较长的应用