【问题标题】:Executable jar running slower than Eclipse运行速度比 Eclipse 慢的可执行 jar
【发布时间】:2012-04-03 05:46:10
【问题描述】:

当我从 Eclipse 运行时,我的程序运行得非常好,但是我将它打包到一个可执行 jar 并从命令行运行它,它运行得慢得多(几乎慢了五倍)。我什至在执行 jar 时设置了 -vmargs java -Xms40m -Xmx512m -jar jarFile.jar 我的机器上没有任何旧版本的 java。我无法理解我在这里错过了什么。 eclipse 如何在使用相同版本的 java 和相同的 vm 参数时更快地运行相同的程序。任何帮助将不胜感激。

谢谢, 卡提克

【问题讨论】:

  • jar 有点慢,因为它必须在执行时解压缩,但慢 5 倍是很长的。 jar 文件有多大? jar 文件中可能没有需要的资源。

标签: eclipse jar executable


【解决方案1】:

我们遇到了类似的问题,但问题是在将 Java 代码作为可运行的 jar 文件从 eclipse 导出时,我们选择了一个选项“将所需的库打包到生成的 jar 中”。这是将所有引用的库作为 jar 文件放入可运行的 jar 中,这可能在每次运行期间都被解包。相反,我们在创建可运行的 jar 文件时使用了“将所需的库提取到生成的 jar 中”选项,并且 jar 的执行速度猛增 - 几乎与在 eclipse 中运行代码时相同。

【讨论】:

  • 我们昨天花了几个小时才弄清楚,但刚刚注意到有些人已经在 SO 中发布了这个:stackoverflow.com/questions/22685103/…
  • 我可以确认这对我的可运行 JAR 文件产生了巨大的影响。在 Windows 中,它的运行速度至少快 20 倍,一分钟比大约一分钟快。 20-25 分钟。
  • 刚刚做了这个改动,JAR 文件登上了月球,超级快,很棒的提示!
  • “将所需的库复制到子文件夹中”也可以正常工作
【解决方案2】:

您很可能会向 System.out/System.err 打印很多内容(直接或通过日志记录)。 Windows 终端仿真器需要渲染您的输出,并且比 Eclipse 慢。

尝试将所有输出重定向到文件或 NUL 并再次测量。

【讨论】:

  • 我没有使用任何 System.out 语句,但我的日志文件很大,您认为这是原因之一吗?
  • 也许吧。在 Oracle JDK 中使用 jvisualvm 进行分析,看看时间都去哪儿了。
【解决方案3】:

而不是选中“将所需的库打包到生成的 jar 中”, 在创建可运行的 jar 文件时使用“将所需的库提取到生成的 jar”选项。这样可以节省很多时间。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-10
    • 2023-03-08
    • 2014-02-26
    • 2012-12-25
    • 2020-05-18
    • 2015-12-27
    相关资源
    最近更新 更多