2016-08-06 129 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