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

20

我正在为一篇关于 java.io.BufferedInputStream 和缓冲区的博客文章做研究。显然,多年来默认大小从微不足道的512字节增长到8192字节,直到(自认为的)Sun Java 7实现,并且甚至在JDK 1.1.8的JavaDocs中明确指定了。我的问题也引发了关于谁或什么决定默认值应该是什么的问题 - 这不像我预期的那样简单。

我想知道每个版本发布时默认缓冲区大小是多少,以及在其他奇特的JVM中可能是多少。到目前为止,我已经通过源代码、JavaDocs或Sun的1.0、1.1、1.4、Java 5、Java 6和(自认为的)Sun Java 7 JVM的错误报告来追踪它。

我未能找到的是:

  • Sun JDK 1.2的JVM实现
  • Sun JDK 1.3的实现
  • 任何其他实现的值(如IBM或其他)

所以,我想知道这些值是多少,我能在哪里找到对它们的参考?

或者,如果有SOpedians在那里有使用其中一个版本,请编译和运行下面的代码,然后在此处报告返回结果?或者,你是否了解

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
这个应该标记为社区Wiki。此外,您可以在此处下载存档的Sun JDK版本:http://java.sun.com/products/archive/ - BalusC
是的,但那需要很多工作...我使用的是Mac,最终需要启动EC2实例,安装JVM等等。(我有点懒。) - Stu Thompson
社区维基?这只是一个协作请求,不是一个问题。 - BalusC
1
这是一个需要非常专业知识的问题,或者向某人展示如何获取它。你知道这些值是什么吗?或者知道在哪里可以找到它们吗?这是一个真正的问题,带有适当的问号。无论如何,我已经编辑了这个问题以迎合您的敏感性。 - Stu Thompson
4个回答

5

Mac OS X Tiger 10.7.0, 默认的 Apple-provided 虚拟机:

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

4
系统:
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

2

我不确定你希望从这里学到什么,但是既然我已经拿到了它……一个win32 IBM 1.4.2 JRE使用缓冲区大小为2048


2
太好了,谢谢。你还在编写1.4版本的代码吗?疼痛 - Stu Thompson

1

在Windows 7上从我的IntelliJ运行:

  • JRE: 1.8.0_112-release-724-b6 amd64
  • JVM: 由JetBrains s.r.o提供的OpenJDK 64位服务器虚拟机
  • Windows 7 6.1

输出:

1.8.0_121
8192

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接