耐心是一切聪明才智的基础。
零拷贝
两者的写入都是写入内存,可以调用force方法强刷到硬盘。
-
mmap
- 3次copy 4次上下文切换
- java 对应
MappedByteBuffer
方法
-
sendfile
- 3次copy 3次上下文切换
-
linux2.4
2次copy 3次上下文切换 - java对应
transferTo
方法
自己试了试:
- 复制s.mkv文件 文件大小2m
stream
复制文件,耗时: 10144
buffer+stream
复制文件,耗时: 51
mmapCopy
复制文件,耗时: 22
transferTo
复制文件,耗时: 5
clone
A c = a.clone()
是拷贝,复制一份出来,对象就是引用地址。
需要里面引用的对象也实现clone
接口 才能深拷贝
参考:
https://www.jianshu.com/p/0c8bfde432a0
https://zhuanlan.zhihu.com/p/78869158
网友评论