2010-01-19 26 views
16

我一直在做一些關於java.io.BufferedInputStream和緩衝區的博客文章的一些研究。顯然,多年來,默認情況下從512字節增長到8192字節,其中(無禮) Sun的Java 7實現,甚至在JavaDocs in JDK 1.1.8中也有明確規定。我的問題也提出了who/what deciedes what the default should be的問題 - 它並不像我預期的那樣黑白。舊式和異步JVM上java.io.BufferedInputStream的默認緩衝區大小是多少?

我很好奇在每個版本發行版上默認的緩衝區大小是多少,以及它在其他異國情調的JVM中可能是什麼。到目前爲止,我已經通過源代碼,JavaDocs或Sun bug報告跟蹤了它,分別是1.0,1.1,1.4,Java 5,Java 6和(妄想再次) Sun的Java 7 JVM。

什麼我沒來是這個值

  • 太陽JDK 1.2的JVM實現
  • 太陽JDK 1.3的實現
  • 任何其他實現的價值(如IBM或東西其他)

所以,我想知道這些值是什麼,我可以找到他們的參考?

或者,如果有的話,如果有的話,可能有權訪問其中的一個安裝。如果是這樣,你能編譯並運行下面的代碼,然後在這裏報告嗎?或者,你知道的

import java.io.BufferedInputStream; 
import java.io.InputStream; 

public class BufferSizeDetector extends BufferedInputStream { 
    public static void main(String[] args) { 
     BufferSizeDetector bsd = new BufferSizeDetector(null); 

     System.err.println(System.getProperty("java.version")); 
     System.err.println(bsd.getBufferSize()); 
    } 

    public BufferSizeDetector(InputStream in) { 
     super(in); 
    } 

    public int getBufferSize() { 
     return super.buf.length; 
    } 
} 
+2

這應該被標記爲社區維基。此外,您可以在此處下載已存檔的Sun JDK版本:http://java.sun.com/products/archive/ – BalusC 2010-01-19 17:04:04

+0

是的,但這有很多工作...我在Mac上,最終會踢掉EC2實例,安裝JVM,yada,yada,yada。 (我很懶。) – 2010-01-19 17:09:02

+0

社區Wiki?這只是對合作的要求,而不是問題。 – BalusC 2010-01-19 17:21:16

回答

1

我不知道你希望從這個學什麼,但因爲我有它在我的面前......一個Win32 IBM 1.4.2 JRE使用的緩衝區大小2048

+0

非常好。謝謝。 (你還在編碼爲1.4嗎?* Ouch。*) – 2010-01-20 06:30:15

3

系統:

Linux wart 2.6.33-rc1-00225-gc9f937e #2 Wed Dec 23 17:55:01 UTC 2009 armv5tel GNU/Linux 
OpenJDK Runtime Environment (IcedTea6 1.4.1) (6b14-1.4.1-0ubuntu10) 
OpenJDK Core VM (build 14.0-b08, interpreted mode) 

從你的程序的輸出:

1.6.0_0 
8192 
+0

IcedTea ...很酷。我沒有想到這一點。 – 2010-01-20 06:29:23

5

的Mac OS X Tiger的10.7.0,默認蘋果提供的VM:

Java(TM) SE Runtime Environment (build 1.6.0_26-b03-383-11A511) 
Java HotSpot(TM) 64-Bit Server VM (build 20.1-b02-383, mixed mode) 

然後:

1.6.0_26 
8192 
在Windows 7中,從我的IntelliJ
1

運行:

  • JRE:1.8.0_112釋放-724-B6 AMD64
  • JVM:OpenJDK的64位服務器VM通過JetBrains的SRO
  • Windows 7的6.1

輸出:

1.8.0_121 
8192 
相關問題