V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
SparkMan
V2EX  ›  问与答

pageCache 和 directBuffer 的一些问题

  •  
  •   SparkMan · 2018-07-16 19:25:21 +08:00 · 1619 次点击
    这是一个创建于 2123 天前的主题,其中的信息可能已经有所发展或是发生改变。

    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

    2 条回复    2018-07-17 02:10:30 +08:00
    seaswalker
        1
    seaswalker  
       2018-07-16 22:57:18 +08:00 via iPhone
    俺觉着不是一个维度,Linux 那个是系统调用的实现,Java 只是在用户态搞事情,最后还不是通过系统调用去实现
    Mirana
        2
    Mirana  
       2018-07-17 02:10:30 +08:00
    虽然不懂 Java,但是知道一定是绕不开 pagecache 的,Java 作为一个应用层的语言没有资格侵入到内核当中
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   1446 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 23:45 · PVG 07:45 · LAX 16:45 · JFK 19:45
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.