博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
JAVA NIO 中的 zerocopy 技术提高IO性能
阅读量:5264 次
发布时间:2019-06-14

本文共 1546 字,大约阅读时间需要 5 分钟。

 关于一篇更详细更好的介绍 ZeroCopy技术的文章,可参考:

 

这篇文章介绍了 zerocopy技术来提高Linux平台上的IO密集型的JAVA应用程序的性能.

 

zerocopy技术能够避免中间缓冲区中的冗余数据复制以及减少Linux内核空间和用户空间上下文交换的次数。

适用场景:Many Web applications serve a significant amount of static content, which amounts to reading data off of a disk and writing the exact same data back to the response socket.

应用程序从本地磁盘读取数据,再将读取的数据原封不动地发送给Socket。

 

不采用zerocopy技术时的数据传输过程如下:

the kernel reads the data off of disk and pushes it across the kernel-user boundary to the application, and then the application pushes it back across the kernel-user boundary to be written out to the socket. In effect, the application serves as an inefficient intermediary that gets the data from the disk file to the socket.

数据先从本地磁盘读取到内核空间中,再通过缓冲区由用户程序得到,用户程序再通过缓冲区将数据发送到Socket。

 

 

Each time data traverses the user-kernel boundary, it must be copied, which consumes CPU cycles and memory bandwidth. Fortunately, you can eliminate these copies through a technique called — appropriately enough — zero copy.

每次数据传输到 内核-用户 缓冲区时,必须进行复制,这消耗了CPU和内存,而通过 zerocopy技术 可以去掉复制操作。

Applications that use zero copy request that the kernel copy the data directly from the disk file to the socket, without going through the application.

用户程序通过zerocopy请求使得数据直接从内核发送到Socket。

 

JAVA类库通过java.nio.channels.FileChannel. transferTo()方法支持zerocopy技术。

You can use the transferTo() method to transfer bytes directly from the channel on which it is invoked to another writable byte channel, without requiring data to flow through the application。

 

参考:

转载于:https://www.cnblogs.com/hapjin/p/4650314.html

你可能感兴趣的文章
tju 1782. The jackpot
查看>>
湖南多校对抗赛(2015.03.28) H SG Value
查看>>
hdu1255扫描线计算覆盖两次面积
查看>>
hdu1565 用搜索代替枚举找可能状态或者轮廓线解(较优),参考poj2411
查看>>
bzoj3224 splay板子
查看>>
程序存储问题
查看>>
Mac版OBS设置详解
查看>>
优雅地书写回调——Promise
查看>>
android主流开源库
查看>>
AX 2009 Grid控件下多选行
查看>>
PHP的配置
查看>>
Struts框架----进度1
查看>>
Round B APAC Test 2017
查看>>
MySQL 字符编码问题详细解释
查看>>
Ubuntu下面安装eclipse for c++
查看>>
让IE浏览器支持CSS3圆角属性的方法
查看>>
巡风源码阅读与分析---nascan.py
查看>>
LiveBinding应用 dataBind 数据绑定
查看>>
Linux重定向: > 和 &> 区别
查看>>
nginx修改内核参数
查看>>