旧的和异乎寻常的JVM上java.io.BufferedInputStream的默认缓冲区大小是多少?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (8)

我一直在做一些关于java.io.BufferedInputStream缓冲区的的研究。显然,多年来,Sun的Java 7实现默认情况下)默认已经从512字节增长到8192字节,并且甚至在JDK 1.1.8的JavaDocs中明确指定。我的问题也提出了什么样的问题来决定什么样的默认应该是什么 - 它并不像我预期的那样黑白。

我很好奇在每个版本发布时默认的缓冲区大小,以及它在其他异常的JVM中可能会发生什么。到目前为止,我已经通过源代码,JavaDocs或Sun bug报告(针对1.0,1.1,1.4,Java 5,Java 6以及Sun的Java 7 JVM 再次狡猾地追踪了它

我没有看到的是这个价值

  • Sun JDK 1.2的JVM实现
  • Sun 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;
    }
}
提问于
用户回答回答于

该系统:

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
用户回答回答于

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

扫码关注云+社区