java - ' BufferedInputStream ' 的默认缓冲区大小(8KB)的含义? (JAVA)

标签 java file-io bufferedinputstream

我首先好奇的是每个程序的“BufferedInputStream”类的缓冲区大小是如何决定的。我在STACKOVERFLOW中发现默认缓冲区大小是8KB。

我想知道默认的缓冲区大小是否有什么深刻的含义 'BufferInputStream' 类,大小为 8KB。

当我搜索 java 文档以获取有关“BufferedInputStream”类的信息时, 我发现该类有两种形式的构造函数。 一种构造函数形式使用户能够更改缓冲区大小。

BufferedInputStream(InputStream in, int size)

  1. 此类的缓冲区大小对于决定某些程序的性能是否至关重要?我很好奇是否有人使用上述形式的构造函数来更改缓冲区大小以适应/优化他/她的程序。
  2. 默认缓冲区大小 8KB 有什么深刻的含义吗?

感谢您的阅读。

最佳答案

Could the buffer size of this class be critical in deciding performance of some programs? I'm curious if anyone uses the above form of the constructor to change the buffer size to fit/optimize his/her program.

可能不是。将缓冲区大小从 1 更改为 2 将使性能提高大约一倍(通过减少系统调用)。从 2 更改为 4 会再次翻倍。再次从 4 变为 8。你明白了。在某些时候,这种情况不再成立,因为性能不再由系统调用主导,而是开始由传输大小主导。 8k是一个停下来的好地方。如果您愿意,可以使用更多,但您不会注意到太大的差异。

Is there any profound meaning to the default buffer size of 8KB?

没有。它的大小是8k。默认情况下。就是这个意思。您可以通过构造函数更改它。仅此而已。

关于java - ' BufferedInputStream ' 的默认缓冲区大小(8KB)的含义? (JAVA),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38799789/

相关文章:

windows - 文件时间戳不随数据更新而改变

java - 将流保存到文件夹 - readDirectory() 失败 errno=20

java - Cipher.WRAP_MODE 与 Cipher.ENCRYPT_MODE

java - 如何使用 Spring WebSockets 和 Undertow 接收大于 16kB 的 WebSocket 消息

c# - File.CreateText - 拒绝访问

java - 通过 ftp 发送数据库 - 获取不同的文件

java - 如何加速 FileOutputStream 和 FileOutputStream close()?

java - 依赖常量值的单元测试代码

java - 通过 Jenkins + ANT + Android 在没有 Junit 的情况下使用 Emma

ios - 第一次应用程序更新,用户数据丢失(存储在 Documents 目录中)