BufferedInputStream's Default Buffer Size Over Time
The first of a series of posts on BufferedInputStream's default buffer size
While micro-benchmarking the performance of BufferedInputStream with various buffer sizes (both on my new fast SSD and a slow slow USB-attached HDD), the question came to mind "Has this default buffer size value changed over time in Java? And if so, who decides this? And where exactly is the line between a version of Java and a JVM."
My first instinct was to ask the boffins & peasants over at Stack Overflow: Where is exactly is the demarkation between a version of Java and the JVM? While some folks answered my main question, and one SOpedian (Joachim Sauer) went on to loosely answer my real questions, there was still not an absolute answer.
Time to take a trip down history lane via teh Google, and Sun's Java archive site.
| Version | Source | Reference | Year | Bytes |
| JDK 1.0 | API Documentation | JavaDoc | 1996 | 512 |
| JDK 1.1 | Core API Spec | JavaDoc | 1997 | 512 |
| JDK 1.2 | Sun JDK 1.2 | Source Code | 1998 | 2048 |
| JDK 1.3 | Sun JDK1.3 | Source Code | 2000 | 2048 |
| JDK 1.4 | Java 5 bug report | bugs.sun.com | 2002 | 2048 |
| Java 5 | JDK 5 Source | Source code | 2004 | 8192 |
| Java 6 | Open JDK 6 | Source code | 2006 | 8192 |
| Java 7 | Open JDK7 Beta | Source code | 2010 | 8192 |
So, how does that look in a graph?
Interesting. In following posts next month, I'll compare the default buffer size of BufferedInputStream with other seemingly relevant metrics, such as Moore's Law, storage bus speeds, and hard disk size over the years.
There are other Java implementations out there, and they have their own default buffer size. I'll keep this list up to date as I learn of new JVMs.
| Version | Source | Reference | Bytes |
| win32 IBM 1.4.2 JRE | McDowell on Stack Overflow | SO Answer | 2048 |
| IcedTea6 1.4.1 (Java 6) | Max A. on Stack Overflow | SO Answer | 8192 |
BufferedInputStream Default Buffer Size Series: Next