13

我们在构建过程中使用 Java,因为它用于通过 Ivy 解析/发布我们的依赖项。

没问题,我们也没有使用它 2 年,直到我们尝试将 Java 6 Update 26 升级到版本 7 Update 7,而在本地开发人员 PC (WinXP) 上构建现在需要 2 小时才能完成,而不是10分钟!!

PC 上没有其他任何变化,这使它成为我们关注的绝对目标。

有谁知道为什么 Java 版本 7 会产生这样的速度差异?

更新:构建过程是基于 NAnt 的,因此 Java.exe 从 NAnt 脚本调用,在命令 (DOS) 窗口中运行。

4

3 回答 3

2

我正在使用 JDK 7u7,我注意到通过调整一些VM Options可以获得更好的性能。

您可以尝试使用 G1GC 和 AgressiveOpts 来帮助缩短编译时间。

按照我在编辑器中使用的设置:

-Xss8m 
-Xmn256m 
-Xms512m 
-Xmx1024m 
-XX:PermSize=256m 
-XX:MaxPermSize=512m 
-XX:+UseG1GC 
-XX:+OptimizeStringConcat 
-XX:+UseStringCache 
-XX:+AggressiveOpts

您将在VM 选项链接中找到每个选项的说明。

我希望它有所帮助。

于 2012-10-09T18:04:41.883 回答
1

首先,您是删除了 JDK6 还是保留了它?检查您的 JDK_HOME 和指定的任何其他位置,以确保您实际使用的是 JDK7。在 XP 控制台中键入java -version并确保它符合预期。(关闭/重新打开命令提示符以获取 Win GUI 中的更改。)

从未说明您正在运行的 XP 版本是 64 位还是 32 位。确保机器上有适当的 JDK 环境。(根据具体执行的内容,这可以产生明显的差异。此外,调试的最佳选择是保持与以前相同 - 减少变量。)

解决问题并缩小范围。升级后 Eclipse 安装是否执行较慢?(Eclipse 本身在 JVM 中运行。这是一个很好的基准。)当您测试 Eclipse 时,它​​是否指向正确的 JDK?尝试其他 Java 工具,看看是否存在性能差异。构建中不同控制点的断点和日志记录以及任何 Java 可执行文件都是您的朋友。

由于Nant 是基于 .NET 的,您是否查看过实际启动的 Java 进程?你的 Ivy 发行版真的很旧吗?

综上所述,我很难相信这是一个 Java 问题,而不是 Windows 机器上的配置挑战。无论如何,您是否在任何其他机器上尝试过它?

于 2012-10-09T01:49:08.577 回答
1

根据我的经验,Java 7 在速度和兼容性方面是一个巨大的倒退。我发现它不仅编译速度慢,运行 JRE 也慢。

我在运行 Eclipse 时也遇到了重大问题(是的,我使用了更新 7)。

从我的角度来看,Java 7 中没有我需要的东西。我喜欢 ForkJoinPool,并且可以将它作为 Java 6 的附加库。

也许 Java 8 会更好。

于 2012-10-09T02:12:51.563 回答