我正在为一篇关于 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;
}
}