代码之家  ›  专栏  ›  技术社区  ›  Stu Thompson Helter Scelter

在旧的和外来的jvm上,java.io.bufferedinputstream的默认缓冲区大小是多少?

  •  16
  • Stu Thompson Helter Scelter  · 技术社区  · 15 年前

    我一直在为一篇关于 java.io.BufferedInputStream 还有缓冲器。显然,多年来,默认值从微不足道的512字节增加到8192字节 (冒昧地) Sun的Java 7实现,甚至在 JavaDocs in JDK 1.1.8 . 我的问题也引发了 who/what deciedes what the default should be --它不像我想象的那样黑白。

    我很好奇 每个版本的默认缓冲区大小是多少 ,以及在其他奇异的jvm中可能是什么。到目前为止,我已经通过源代码、JavaDoc或Sunbug报告跟踪了1、1.1、1.4、Java 5、Java 6和 (又放肆地说) Sun的Java 7 JVM。

    我没能找到的是这个值

    • sun jdk 1.2的jvm实现
    • sun jdk 1.3的实现
    • 任何其他实现的价值(如IBM或其他)

    所以,我想知道 这些价值观是什么,我在哪里可以找到它们的参考?

    或者,如果有任何sopedian的话,baring可能可以访问这些设备中的一个。如果是,你能编译并运行下面的代码,然后在这里报告吗?或者,你知道吗

    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;
        }
    }
    
    4 回复  |  直到 8 年前
        1
  •  5
  •   Jean-Philippe Pellet    14 年前

    Mac OS X Tiger 10.7.0,苹果提供的默认虚拟机:

    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
    
        2
  •  3
  •   Max A.    15 年前

    该系统:

    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
    
        3
  •  1
  •   McDowell rahul gupta    15 年前

    我不知道你希望从中学到什么,但既然我面前摆着它…win32 ibm 1.4.2jre使用的缓冲区大小为 2048 .

        4
  •  1
  •   kevinarpe Dario Hamidi    8 年前

    在Windows 7中从My IntelliJ运行:

    • JRE:1.8.0_112-release-724-B6 AMD64
    • jvm:jetbrains s.r.o开发的openjdk 64位服务器vm
    • Windows 7 6.1版

    输出:

    1.8.0_121
    8192