2016-08-06 63 views
1

我首先对每个程序如何确定'BufferedInputStream'类的缓冲区大小感到好奇。我在STACKOVERFLOW中发现缺省缓冲区大小是8KB。'BufferedInputStream'的默认缓冲区大小(8KB)的含义? (JAVA)

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

当我搜索关于'BufferedInputStream'类的信息的java文档时,我发现这里有两种形式的构造函数。 一个构造函数窗体为用户提供了更改缓冲区大小的功能。

的BufferedInputStream(InputStream的中,INT大小)

  1. 难道这个类的缓冲区的大小是决定某些程序的性能是至关重要的?我很好奇,如果有人使用上述形式的构造函数来改变缓冲区大小以适应/优化他/她的程序。
  2. 8KB的默认缓冲区大小有什么深意吗?

谢谢您的阅读。

回答

1

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

可能不是。从1到2的缓冲区大小将使您的性能提高一倍(通过减少系统调用)。从2更改为4将再次翻倍。再次从4改为8。你明白了。在某种程度上,这种情况不再是事实,因为性能不再被系统调用所控制,并开始被传输大小所支配。 8k是一个停下来的好地方。如果你喜欢使用更多,但你不会注意到很多差异。

8KB的默认缓冲区大小是否有深刻的含义?

没有。它的大小是8K。默认。这就是意思。你可以通过构造函数来改变它。没有更多的了。

+0

在8KB中有一个_profound含义:4KB是NTFS的默认和推荐块大小,它也是linux默认的。 8KB是它的两倍。您最好选择一个块大小的倍数以提高效率。 – destan