jar 在我的机器上更快,但在其他机器上更慢

jar is faster in my machine but slower in other

我编写了一个 java 程序,它使用多线程并在处理完成时打印 运行 时间。

我已经创建了 jar 文件,所以我可以在大学的服务器上测试它。 eclipse 中的程序和 jar 文件 运行 在我的机器上都完美无缺(8 GB RAM 和只有 4 个 CPU Ubuntu)。但是当我尝试在服务器上执行 jar 时,速度慢了 2 倍!知道服务器上的虚拟机有 8GB RAM 和 6 个 CPU (Debian)。

为什么jar文件在虚拟机上比较慢?我想这可能是因为 Debian 机器上的 JDK 版本,所以我更新了 JDK 和 JRE。

(在 Debian 中使用了 Java 版本)

openjdk version "1.8.0_171"
OpenJDK Runtime Environment (build 1.8.0_171-8u171-b11-1~deb9u1-b11)
OpenJDK Server VM (build 25.171-b11, mixed mode)

(Java 我的版本 "supposed-to-be-slower" Ubuntu)

java version "1.8.0_171"
Java(TM) SE Runtime Environment (build 1.8.0_171-b11)
Java HotSpot(TM) 64-Bit Server VM (build 25.171-b11, mixed mode)

从 Java 7 开始,OpenJDK 和 Oracle HotSpot 之间几乎没有区别,请参阅 Moving to OpenJDK as the official Java SE 7 Reference Implementation 文章。

如果您想比较两台 Linux 机器上的执行情况,您可以尝试使用 Flame Graphs:

进行分析

Flame graphs are a visualization of profiled software, allowing the most frequent code-paths to be identified quickly and accurately.

提供了如何使用它们的一个很好的示例 on Netflix tech blog,尤其是 "The Problem with Profilers" 部分。