在操作系统中,使用传统的方式,数据需要经历几次拷贝,还要经历用户态/内核态切换。
1. 从磁盘复制数据到内核态内存;
2. 从内核态内存复制到用户态内存;
3. 然后从用户态内存复制到网络驱动的内核态内存;
4. 最后是从网络驱动的内核态内存复制到网卡中进行传输。
所以,可以通过零拷贝的方式,减少用户态与内核态的上下文切换和内存拷贝的次数,用来提升I/O的性能。零拷贝比较常见的实现方式是mmap,这种机制在Java中是通过MappedByteBuffer实现的。
在操作系统中,使用传统的方式,数据需要经历几次拷贝,还要经历用户态/内核态切换。
1. 从磁盘复制数据到内核态内存;
2. 从内核态内存复制到用户态内存;
3. 然后从用户态内存复制到网络驱动的内核态内存;
4. 最后是从网络驱动的内核态内存复制到网卡中进行传输。
所以,可以通过零拷贝的方式,减少用户态与内核态的上下文切换和内存拷贝的次数,用来提升I/O的性能。零拷贝比较常见的实现方式是mmap,这种机制在Java中是通过MappedByteBuffer实现的。
上一篇:Consumer的负载均衡
什么是零拷贝?文章目录什么是零拷贝?1. Java 实现应用缓存零拷贝2. 底层零拷贝实现
什么是零拷贝传统能有
什么是浅拷贝和深拷贝
举报文章
请选择举报类型
补充说明
0/200
上传截图
格式支持JPEG/PNG/JPG,图片不超过1.9M