Java版本和JVM之间的区别在哪里?

Stu*_*son 3 java jvm

Java版本和JVM之间的区别在哪里?

我问的是因为最近有一个关于默认缓冲区大小的SOpedian的'教育'评论帖子java.io.BufferedInputStream,我看到它是8192.(它一直是8192吗?)当考虑API时,很明显是什么是什么.但随着实现一个的java.*类......我只是不知道.

这导致两个衍生问题:

  • 可能BufferedInputStream是Java版本之间的默认缓冲区大小更改?
  • BufferedInputStream的默认缓冲区大小是在各种供应商的JVM不同?

(当然还有其他类似的例子,比如各种集合的实现.)

Joa*_*uer 6

由于API规范BufferedInputStream没有指定值,因此完全由实现来选择一个.

这意味着默认缓冲区大小可以在Java版本之间以及相同Java规范的不同实现之间更改.

它在其他领域几乎相同:真正的规范是文档(即JLS,JVM规范和API规范,或者更确切地说是相应的JCP).

其他所有内容(即从查看源代码可以看到的所有内容)都是一个实现细节,具体取决于它是一个错误.