我理解的是,通过调用
如果在两个不同的操作系统上使用相同版本(主要、次要、发布等)的JVM,在相同的源文件上调用
javac
生成的Java字节码与底层操作系统无关,但是HotSpot编译器将根据程序运行情况执行特定于平台的JIT优化和编译。然而,我在32位JDK上编译了代码,并在32位JVM下的Solaris上执行(两个操作系统都不是64位)。据我所知,Solaris x86盒子在所有方面都应该优于Windows盒子(核心数量、内存量、硬盘延迟、处理器速度等等)。然而,同样的代码在Windows上运行比在Solaris上更快(单个数据点是在Windows上花费7.5秒,在Solaris上花费超过10秒),这种情况一直存在。我的下一个测试是在Solaris上进行编译并注意性能差异,但是这对我来说毫无意义,并且我找不到任何Oracle文档来解释我所看到的现象。如果在两个不同的操作系统上使用相同版本(主要、次要、发布等)的JVM,在相同的源文件上调用
javac
,是否会在Java字节码(生成的.class
文件)中产生不同的优化?有没有任何解释这种行为的文档?