pageCache 和 directBuffer 的一些问题

2018-07-16 19:25:21 +08:00
 SparkMan

1、Linux 上的缓存 IO 指 wirte 的时候,先把数据从应用地址空间(比如 JAVA 堆)拷贝到 kernel 缓冲区( pagecache )中,然后再刷盘; 2、JAVA 的 HeapByteBuffer 在 write 的时候,会先把数据拷贝到 Direct Memory,再 write,那么问题一:还会继续写 pagecache 吗? 3、问题二,JAVA 的 DirectByteBuffer 是把数据存在堆外内存,这个堆外内存是指 pagecache 吗?还是说先堆外,再转到 pageCache? 3、问题二,direct IO(直接 IO) 跟 directByteBuffer 有关系吗?貌似直接绕过了 pageCache

1626 次点击
所在节点    问与答
2 条回复
seaswalker
2018-07-16 22:57:18 +08:00
俺觉着不是一个维度,Linux 那个是系统调用的实现,Java 只是在用户态搞事情,最后还不是通过系统调用去实现
Mirana
2018-07-17 02:10:30 +08:00
虽然不懂 Java,但是知道一定是绕不开 pagecache 的,Java 作为一个应用层的语言没有资格侵入到内核当中

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/471363

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX