8

我开发了一个通常在 Linux 上运行的 Java 应用程序。这是一个带有 Swing 的 POJO 应用程序。性能相当不错。

现在我尝试在具有 2Gb RAM 的 Windows XP 上运行它,在一台具有相似或更高效能的机器上运行它,但性能要差得多。我观察到它使用 100% CPU。

例如:

  • 一个创建非常繁重的窗口的进程,包含许多组件:Linux 5 秒,Windows 12。
  • 使用繁重查询访问 PostgreSQL 数据库的进程(服务器和 JDBC 驱动程序相同):23 秒 Linux,Windows 43。

    我还尝试了具有类似功能的虚拟化 Windows 机器,结果明显更好!

    正常吗?我可以分配哪些参数来提高性能?

4

3 回答 3

5

除非您在同一台机器上比较 Linux 和 Windows XP,否则很难说有什么区别。可能是因为 CPU 更快,但 GFX 卡和磁盘子系统更慢。

Java 将所有这些 IO 和 GFX 活动传递给底层操作系统,您唯一可以做的不同就是减少工作或提高工作效率。这可能会使两个系统都更快,因为您可以调整的操作系统并不特别。

于 2012-08-09T08:48:36.257 回答
1

尝试运行 Java Visual VM(作为 JDK 的一部分分发):附加到您的应用程序,然后使用 CPU Profiler 来准确确定所有 CPU 时间的去向。

于 2012-08-09T09:26:32.100 回答
0

JRE 部分的行为可能存在细微差别(想到 Swing),JRE 对不良做法的反应非常无情(例如从 Swing 中的错误线程执行操作)。

由于您没有任何线索,我会尝试在两种环境中分析相同的用例,看看是否有任何显着差异出现在花费时间的地方。这有望揭示一个提示。

编辑:并确保您不要在刹车的情况下运行 Windows(又名防病毒和其他可能会破坏系统性能的“有用”软件)。

于 2012-08-09T13:07:58.993 回答