gpt4 book ai didi

java - 为什么 BufferedReader 的默认 char 缓冲区大小是 8192?

转载 作者:搜寻专家 更新时间:2023-10-31 08:32:10 25 4
gpt4 key购买 nike

当我构建一个新的 BufferedReader 时,它为我提供了一个 8192 个字符的缓冲区。这背后的逻辑/原因是什么?

8192 = 2 to the power of 13

最佳答案

传统上,操作系统中的内存管理器和页面文件在大小为 2 的幂的页面上工作。这允许通过左移/右移操作执行非常高效的乘法/除法操作。使用缓冲区时,最坏的情况是缓冲区的大小比页面大小长 1 个字节(这将导致额外的页面交换,但 yield 非常低)。因此,默认缓冲区大小也将倾向于以两倍为单位实现。

我假设(但尚未检查)JVM 会寻找这样的缓冲区并尝试将它们对齐到页面边界。

为什么这很重要?页面未命中的代价非常高。如果您正在进行大量 IO,最好避免支持缓冲区的页面换出到磁盘的情况(有点违背缓冲区的目的)。也就是说,对于大多数应用程序来说,这是一个微优化,对于绝大多数情况,默认值就可以了。

作为引用,Windows 和 Linux 目前都使用 4KB 的内存页面大小。因此 BufferedReader 上的默认缓冲区将恰好占用 2 页。

关于java - 为什么 BufferedReader 的默认 char 缓冲区大小是 8192?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37404068/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com