java性能Windows vs Linux

时间:2012-08-09 08:38:32

标签: java windows linux performance

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

现在我尝试在具有2Gb RAM的Windows XP上运行它,在具有相似或更大效力的机器中,性能更差。我发现它使用100%的CPU。

例如:

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

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

    这是正常的吗?我可以指定哪些参数来提高性能?

3 个答案:

答案 0 :(得分:4)

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

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

答案 1 :(得分:1)

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

答案 2 :(得分:0)

JRE部分的行为可能存在微妙的差异(Swing浮现在脑海中),JRE对不良实践的反应非常无情(比如在Swing中从错误的线程做事)。

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

编辑:并确保您不会运行带刹车的Windows(也称为防病毒和其他可能会破坏系统性能的“有用”软件)。