NIO和零拷贝
1、传统的IO操作共会进行三次状态的转换和四次拷贝
2、mmap优化:通过内存映射,将文件映射到内核缓冲区,同时,用户空间可以共享内核空间的数据,这样在进行网络传输时,就可以减少内核空间到用户控件的拷贝次数。(即底层是在内核缓冲区进行修改的),此时是三次状态的转换和三次拷贝。适合小数据量的读写
3、sendFile,二次状态转化,三次拷贝。适合大文件传输
(零拷贝是指从操作系统角度,没有cpu拷贝)
使用transferTo命令就是使用了零拷贝FilChannel.transferto
但是linux下可以直接传输但是在windows下只能传8M大小的文件,所以在windows下需要分片