Copy*2的问题

来源:2-9 Buffer的原理和使用场景-面试题解读(1)

厦客

2021-05-24

老师您好,I/O成本这里,Copy2是从网卡到内核空间,然后从内核空间到用户空间缓冲区吗?
如果是这样的话,Channel到Buffer中间的那个Copy做了什么?
如果不是的话,Channel到Buffer中间的那个Copy是从内核空间到用户空间缓冲区的话,那前面的Copy
2具体是做了什么?

写回答

1回答

求老仙

2021-05-30

Copy*2你的理解没问题。 Channel是一个抽象的封装,连接两个Buffer, 是Java的内部实现。 Java使用Native Interface读取的数据(文件数据、网络数据等等),都要放入Buffer,然后再到Channel, 最后到用户的Buffer。Channel的设计目标就是高效,且强制规范用户必须使用Buffer。


Copy*2是理论值,网卡->内核->用户空间(实际往往会多于这个值,比如网卡->内核->JVM 的Buffer -> Channel -> 用户的Buffer)。DirectMemory可以减少一次拷贝。 

2
2
树上的伯爵
我觉得慕课网要出个回答收藏功能
2021-09-03
共2条回复

笑傲Java面试 剖析大厂高频面试真题 秒变offer收割机

深度剖析大厂面试高频真题,让你秒变offer收割机

1783 学习 · 314 问题

查看课程