Netty核心源码——零拷贝原理
2024-04-24 10:16:14 4 举报
Netty核心源码——零拷贝原理
作者其他创作
大纲/内容
Client
拷贝
Server操作系統物理内存(内核态)
数据的引用
Socket緩冲
Netty的接收和发送ByteBuf采用DIRECT BUFFERS,使用堆外直接内存进行Socket读写,不需要进行字节缓冲区的二次拷贝。如果使用传统的JVM堆内存(HEAP BUFFERS)进行Socket读写,JVM会将堆内存Buffer拷贝一份到直接内存中,然后才能写入Socket中。JVM堆内存的数据是不能直接写入Socket中的。相比于堆外直接内存,消息在发送过程中多了一次缓冲区的内存拷贝。
直接内存
发送数据
JVM(用户态)
堆内存操作数据,一次读写数据需要拷贝四次
引用
数据
直接内存操作数据,一次读写只需要拷贝两次,零拷贝并不是说没有拷贝,主要说的是用户空间和内核空间的数据相互拷贝
0 条评论
下一页