ejemplo java history bufferedinputstream

ejemplo - ¿Cuál es el tamaño de búfer predeterminado para java.io.BufferedInputStream en JVM antiguas y exóticas?



bufferedoutputstream (4)

Ejecutar desde mi IntelliJ en Windows 7:

  • JRE: 1.8.0_112-release-724-b6 amd64
  • JVM: OpenJDK 64-Bit Server VM por JetBrains sro
  • Windows 7 6.1

Salida:

1.8.0_121 8192

He estado investigando un blog sobre java.io.BufferedInputStream y buffers. Aparentemente, a lo largo de los años, el valor predeterminado ha aumentado de 512 bytes a 8192 bytes a partir de (presuntamente) la implementación de Java 7 de Sun, e incluso se especificó explícitamente en los JavaDocs en JDK 1.1.8 . Mi pregunta también ha planteado preguntas acerca de quién / qué determina cuál debería ser el valor predeterminado : no es tan negro-blanco como esperaba.

Tengo curiosidad por saber cuál ha sido el tamaño del búfer por defecto en cada versión de la versión , y lo que puede ser en otras JVM exóticas. Hasta ahora lo he rastreado, a través de código fuente, JavaDocs o informes de errores de Sun para 1.0, 1.1, 1.4, Java 5, Java 6 y (supuestamente de nuevo) Java 7 JVM de Sun.

Lo que no he podido encontrar es este valor para

  • Implementación JVM de Sun JDK 1.2
  • Implementación de Sun JDK 1.3
  • Cualquier otro valor de implementación (como IBM o algo más)

Entonces, me preguntaba cuáles son esos valores y dónde podría encontrar una referencia a ellos.

O bien, ese descubrimiento, si alguno de los SOpedians podría tener acceso a una de estas instalaciones. Si es así, ¿podría compilar y ejecutar el siguiente código y luego informar aquí? O bien, sabes de

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; } }


El sistema:

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)

El resultado de su programa:

1.6.0_0 8192


Mac OS X Tiger 10.7.0, VM predeterminada proporcionada por Apple:

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)

Entonces:

1.6.0_26 8192


No estoy seguro de lo que esperas aprender de esto, pero como lo tengo delante de mí ... un Win32 IBM 1.4.2 JRE usa un tamaño de búfer de 2048 .