Java NIO中的零拷贝原理
零拷贝
零拷贝即Zero-Copy,顾名思义,零拷贝是指的一种非拷贝的方式来减少IO次数的工作方式。零拷贝的作用就是减少IO,提高IO效率。
1 传统IO方式
传统IO的工作方式需要经历多次文件拷贝,还需要程序在操作系统模式和用户模式之间来回切换,这样来回一圈后才来完成一次文件修改,这样极大浪费了内存,效率偏低,所以在传统IO的基础上有了零拷贝的方式。
2 零拷贝原理
3 Java中如何使用零拷贝
使用Java中RandomAccessFile的transferTo方法或者transferFrom方法,具体实例如下。
public static void main(String[] args) throws IOException { RandomAccessFile from = new RandomAccessFile("src/main/java/com/lbh/nio/from.txt", "rw"); RandomAccessFile to = new RandomAccessFile("src/main/java/com/lbh/nio/to.txt", "rw"); FileChannel channel = from.getChannel(); FileChannel toChannel = to.getChannel(); channel.transferTo(0,channel.size(),toChannel); }
到此这篇关于Java NIO中的零拷贝原理的文章就介绍到这了,更多相关Java中的零拷贝内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
相关文章
Java synchornized与ReentrantLock处理并发出现的错误
synchronized机制提供了对每个对象相关的隐式监视器锁,并强制所有锁的获取和释放都必须在同一个块结构中。当获取了多个锁时,必须以相反的顺序释放。即synchronized对于锁的释放是隐式的2023-01-01SpringCloud Gateway 利用 Mysql 实现动态路由的方法
这篇文章主要介绍了SpringCloud Gateway 利用 Mysql 实现动态路由的方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下2021-02-02springboot集成PageHelper分页失效的原因及解决
项目启动初期,在集成mybatis的分页插件,自定义封装了一个分页的工具类,方便后期项目的扩展,结果无法分页了,怎么设置搞都没办法正常分页,所以本文将给大家介绍一下springboot集成PageHelper分页失效的原因及解决,需要的朋友可以参考下2023-10-10
最新评论