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

时间:2016-08-06 01:37:32

标签: java file-io bufferedinputstream

我第一次好奇是如何为每个程序决定'BufferedInputStream'类的缓冲区大小。我在STACKOVERFLOW中发现默认缓冲区大小为8KB。

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

当我搜索java docs以获取有关'BufferedInputStream'类的信息时, 我发现这个类有两种形式的构造函数。 一个构造函数表单为用户提供了更改缓冲区大小的功能。

BufferedInputStream(InputStream in,int size)

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

1 个答案:

答案 0 :(得分:1)

  

此类的缓冲区大小是否对决定某些程序的性能至关重要?我很好奇是否有人使用上述形式的构造函数来更改缓冲区大小以适合/优化他/她的程序。

可能不是。从缓冲区大小1更改为2将使性能提高一倍(通过减少系统调用)。从2变为4将再次加倍。再次从4变为8。你明白了。在某些时候,这种情况不再是真实的,因为性能不再受系统调用的支配,并且开始受到传输大小的支配。 8k是一个停下来的好地方。如果你愿意,可以使用更多,但你没有注意到很多不同。

  

默认缓冲区大小是否有任何深刻的意义?

没有。它的大小是8k。默认情况下。这就是意思。您可以通过构造函数更改它。没有更多的东西。