Java应用程序Windows与Mac OS X.

时间:2013-09-25 17:52:16

标签: java macos jvm

我在一个解析XML文件的小型Windows桌面上开发了一个java应用程序。我遇到了一个非常有趣的观察,我非常好奇。

我为我的应用程序生成了一个可执行jar,并在非常强大的Windows Server机器上运行它。它有2个物理Xeon处理器,每个8核,主频为2.7 GHz,50GB RAM和7200 RPM硬盘。我启动应用程序时机器处于空闲状态,我很确定没有其他应用程序与我共享机器。

后来,我在Macbook Pro上运行可执行文件,以便查看其行为。我的个人机器是Core i7,主频为2.2 GHz,配备4 GB RAM和5400 RPM硬盘。

令人惊讶的是,在我个人较弱的机器上,应用程序的速度提高了两倍。这是相同的输入\相同的输出。没有IO,但是为了读取XML来解析它们,我在终端上没有打印任何东西但是开始时间\结束时间&最终结果是一行

我非常好奇理解这种戏剧性的表现差异背后的原因。特别是来自硬件级别较弱的机器。它是以更好的方式处理硬件的操作系统吗? JVM工作得更好吗?

1 个答案:

答案 0 :(得分:9)

在Windows上,JRE的默认安装附带HotSpot Client编译器。此编译器仅执行基本优化,与服务器HotSpot相反,后者执行更积极的优化并生成更快的代码。服务器HotSpot是大多数类Unix和Linux发行版的默认设置,包括Mac OS X.这两个编译器之间的性能差异通常是2-3倍。客户端HotSpot的优化主要是为了加快桌面应用程序的启动速度,而不是长期运行流程的最佳性能。

要检查您使用的编译器,请发出以下命令:

java -version

在我的机器上它给出了:

java version "1.6.0_45"
Java (TM) SE Runtime Environment (build 1.6.0_45-b06)
Java HotSpot(TM) 64-Bit Server VM (build 20.45-b01, mixed mode)
                        ^^^^^^  this

要在Windows上获取Server HotSpot,您需要下载并安装JDK,然后使用-server命令行开关运行您的程序。