I've been doing some research for a blog post regarding java.io.BufferedInputStream
and buffers. Apparently, over the years, the default has grown from a measly 512 bytes to 8192 bytes as of (presumptuously) Sun's Java 7 implementation, and was even explicitly specified in the JavaDocs in JDK 1.1.8. My question has also brought up questions of who/what deciedes what the default should be--it's not as black-n-white as I had expected.
I am curious as to what the default buffer size has been at each version release, and what it may be in other, exotic JVMs. So far I've tracked it down, via source code, JavaDocs or Sun bug reports for 1.0, 1.1, 1.4, Java 5, Java 6 and (presumptuously again) Sun's Java 7 JVM.
What I've failed to turn up is this value for
So, I was wondering what those values are and where I could find a reference to them?
Or, that baring, if any SOpedians out there might have access to one of these installations. If so, could you compile and run the below code, and then report back here? Or, do you know of
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;
}
}
Creates a new buffered output stream to write data to the specified underlying output stream. stream with a default 512-byte buffer size.
Initializes a new instance of the BufferedStream class with a default buffer size of 4096 bytes.
Ans is 8 KB.
A BufferedInputStream adds functionality to another input stream-namely, the ability to buffer the input and to support the mark and reset methods. When the BufferedInputStream is created, an internal buffer array is created.
Mac OS X Tiger 10.7.0, default Apple-provided 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)
Then:
1.6.0_26
8192
The system:
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)
The output from your program:
1.6.0_0
8192
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With