jvm - 优化从 DVD 加载 JRE 和 JVM 的时间

标签 jvm loading java dvd

我将私有(private) JRE 与 DVD 中的 jar 程序一起发布。如果我直接从 DVD 运行该程序,大约需要 3 分钟。由于光盘速度慢,可能需要时间将 JRE 库加载到主内存。但是,当我关闭程序并重新启动时,它会立即启动,就好像 JRE 安装在本地计算机上一样(实际上不是)。我认为 JRE 即使在我关闭程序后仍保留在内存中。

3 分钟对用户来说是一个很长的等待时间,有什么方法可以优化代码(这是我唯一控制的东西),它只加载几个库来启动并按需加载其他必要的库。现在可能它正在尝试从 DVD 加载所有内容,然后按照

的建议显示程序窗口
$java.exe -verbose -jar myProgram.jar

是否有任何其他解决方案可以在第一时间快速启动程序?目前唯一的解决方法是使用 Launch4J .bmp splash screen但这是非常静态的。

注意:我知道在本地机器上安装 JRE 会解决问题,但该程序不适用于技术用户,如果安装在自定义目录中,我的 Launch4J 找不到它。此外,我的 DVD 受版权保护,因此无法分发该程序。

最佳答案

将您的应用与私有(private) JRE 一起打包到一个 EXE 中,该 EXE 将自解压到用户的临时目录中并自动运行您的应用。启动时间的改进会让您大吃一惊:

http://www.excelsior-usa.com/blog/excelsior-jet/java-app-as-a-single-exe/

(下载示例打包应用程序并将它们刻录到 DVD 上以快速验证我的声明。)

我要强调的是,您可以使用仅使用免费工具 来获得结果,并且可选择使用 Excelsior JET 进一步改进它。有关完整说明,请参阅我们的知识库文章(无论您是否使用 Excelsior JET,大部分说明都适用):

HOWTO: Create a single EXE from your Java application

免责声明:您可能已经猜到,我为 Excelsior 工作。但同样,这一切都适用于私有(private) JRE,而且就启动时间改进而言,结果几乎一样好。

关于jvm - 优化从 DVD 加载 JRE 和 JVM 的时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13587300/

相关文章:

java - 使用 jitWatch 编译错误

java - 无法使 getResourceAsStream() 加载 .properties 资源 - 使用 Netbeans IDE

java - Spark中保存到cassandra,java中没有parallelize方法

java - Full GC 背后的原因是什么?

java - 什么是固定对象溢出?

php - 登录加载页面

angularjs - 如何检测在 AngularJS 中完成的所有图像加载

java - 这是正常的 Java 正则表达式行为吗?

java - 错误的 ELF 类 : ELFCLASS32

javascript - 如何检查窗口是否仍在加载并且已完成加载?