【Netty专栏】四、零拷贝原理

一、什么是零拷贝?

  1. 零拷贝(Zero-copy) 技术是指计算机执行操作时,CPU不需要先将数据从某处内存复制到另一个特定区域。这种技术通常用于通过网络传输文件时节省CPU周期和内存带宽。
  2. 零拷贝技术可以减少数据拷贝和共享总线操作的次数,消除传输数据在存储器之间不必要的中间拷贝次数,从而有效地提高数据传输效率
  3. 零拷贝技术减少了用户进程地址空间和内核地址空间之间因为上:下文切换而带来的开销。
  4. 零拷贝不是不需要拷贝,只是说减少冗余[不必要]的拷贝。

二、为什么使用零拷贝?

 传统数据读写

File file = new File("index.html");
RandomAccessFile raf = new RandomAccessFile(file, "rw");
byte[] arr = new byte[(int) file.length()];
raf.read(arr);
Socket socket = new ServerSocket(8080).accept();
socket.getOutputStream().write(arr);

我们会调用 read 方法读取 index.html 的内容—— 变成字节数组,然后调用 write 方法,将 index.html 字节流写到 socket 中,那么,我们调用这两个方法,在 OS 底层发生了什么呢?

【Netty专栏】四、零拷贝原理_第1张图片

你可能感兴趣的:(Netty实战指南)