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

问题描述 投票:0回答:4

我一直在为一篇关于

java.io.BufferedInputStream
和缓冲区的博客文章进行一些研究。 显然,多年来,默认值已经从区区 512 字节增长到 Sun 的 Java 7 实现的 8192 字节,甚至在 JDK 1.1.8 中的 JavaDocs 中明确指定。 我的问题还提出了“谁/什么决定默认值应该是什么”的问题——它并不像我预期的那样黑白分明。 我很好奇每个版本发布时的默认缓冲区大小是多少,以及在其他奇异的 JVM 中可能是什么。 到目前为止,我已经通过源代码、JavaDocs 或 Sun bug 报告找到了 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; } }

Mac OS X Tiger 10.7.0,Apple 提供的默认 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)
java history bufferedinputstream
4个回答
5
投票

1.6.0_26 8192


系统:

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)

4
投票

1.6.0_0 8192


我不确定您希望从中学到什么,但既然它就在我面前...win32 IBM 1.4.2 JRE 使用的缓冲区大小为

2048

2
投票

在 Windows 7 中从我的 IntelliJ 运行:


JRE:1.8.0_112-release-724-b6 amd64

1
投票
JVM:JetBrains s.r.o 的 OpenJDK 64 位服务器虚拟机

Windows 7 6.1
  • 输出:
  • 1.8.0_121 8192

$ java BufferSizeDetector 21.0.5 8192 $ java --version openjdk 21.0.5 2024-10-15 LTS OpenJDK Runtime Environment Temurin-21.0.5+11 (build 21.0.5+11-LTS) OpenJDK 64-Bit Server VM Temurin-21.0.5+11 (build 21.0.5+11-LTS, mixed mode, sharing)

	
© www.soinside.com 2019 - 2024. All rights reserved.