Java 8更新91 Web Start应用程序启动时间长

6
我们有一组Java应用程序,已经开发多年,通过Web Start远程启动。在更新到Java SE 8 Update 91之后,启动过程会出现非常显著的暂停(根据应用程序不同而定,通常为20-60秒),对于典型用户来说没有任何提示。这种暂停发生在Java的“Starting Application”对话框关闭之后,应用程序启动之前。
暂停的长度似乎与应用程序的大小有关。回滚到Java 8 Update 77可以完全消除此暂停,并且这些相同的应用程序可以无暂停地启动。
我们的应用程序确实请求了“all-permissions”,因为我们需要读写客户端驱动器上的数据进行缓存。因此,我们所有的jar都被签名,并具有必要的清单修改。
如果您的Java设置启用了Java控制台,则在访问应用程序的JNLP文件时,Java的“Starting Application”对话框之后立即显示控制台。然而,在此暂停期间看不到控制台中的任何活动(例如,在暂停之前不会出现任何典型的Java类加载消息,直到暂停之后才会执行我们在“main”方法中的代码)。
一些应用程序相当大。我们编写的代码约为10-12MB,其他资源总计约为15-20MB,具体取决于应用程序。
我找到了一个JDK错误报告,听起来非常相似...bug report。该报告指出,如果在第一次启动之前删除Java缓存,则使用较旧的Java版本会导致立即启动。我报告的问题似乎不受Java缓存的影响。回退到Java 8 Update 77可以在不删除Java缓存的情况下实现即时启动。
Java 8 Update 91的Java发行说明中提到了一个错误修复“修正Applet启动时间的回归”。但是,我没有看到任何表明有意更改会导致启动期间长时间暂停(例如增加的安全扫描等)的内容。
由于这种启动暂停时间过长,并且无法向用户指示正在发生什么,我们收到了有关应用程序的投诉。
非常感谢您的帮助。
更新于2016年7月1日...
我发现了一个与此问题相同的SO问题:similar issue。然而,它与Java 7 Update 40有关。 解决方法是在deployment.properties文件中禁用吊销检查。
我已经使用Java控制台设置了“执行签名代码证书吊销检查”和“执行TLS证书吊销检查”的“不检查”。 并且我检查过确保更改反映在deployment.properties文件中。 然而,这些设置根本无法解决或改善问题。
如果这起作用,它将是问题的一个很好的指标,但让客户在其高级设置中关闭这些吊销检查并不是一个有用的“解决方法”。 对于能够访问我们多个应用程序的公众尤其没有帮助。 更新于2016年7月7日... 基于jaivalis的评论,我下载了Java 8 Update 112 JRE的早期版本。当我使用这个JRE运行我们的应用程序时,没有任何暂停。应用程序在“启动应用程序”对话框关闭后立即运行。
到目前为止,我找不到任何说明原因的注释。我希望这个“修复”不是由于新的安全措施而产生的,这些措施尚未完全应用于这个早期版本。我希望实际上已经解决了一些问题,并且当这个版本正式发布时,立即启动性能将得到保留。
顺便说一下,我找不到Java 8 Update 112的官方发布日期。我希望它会在7月份发布,但我看到一些迹象表明是在10月份。有人知道这个更新什么时候会普遍可用吗?
这里是Java 8 Update 112早期访问页面, 这里是我找到的发布日期信息 Java 8 Update 112发布时间表

这个页面也提到了Java 8 Update 102,但我找不到该更新的早期访问版本。我找到的所有链接都指向112更新。


1
尝试使用像 strace 或 dtruss 这样的工具来查看进程在那些 20 到 60 秒内在做什么。 - mekazu
1
VisualVM 也许会非常有帮助,具体取决于问题的性质。你能获取堆栈转储或概要文件吗? - Steven Schlansker
-mekazu 我正在运行Windows,因此我正在寻找一个类似的strace版本来尝试一下。
  • Steven我刚刚获得了一个线程堆栈转储(Java控制台中的v选项)。我应该将其添加到我的问题中吗?还是我该如何在这里发布这样的内容,因为它非常长(我是这个论坛的新手)?
- Rob
Systnternals-now-Microsoft Process Monitor类似于strace。(注意:它不是另一种东西Process_Explorer。) - dave_thompson_085
我应该将线程堆栈转储作为我的问题更新发布吗?这个转储相当长... - Rob
1
通过我们的应用程序,我遇到了相同的问题(启动延迟约30秒,没有任何指示发生了什么)与Java 8 Update 91。值得一提的是,我们尝试使用早期访问版本Java 8 Update 112,并且问题似乎已经解决(启动是即时的)。因此,研究此更新的更改可能会导致您的问题的答案。 - jaivalis
2个回答

1
这个问题已经在Java 8更新101版(技术上的构建1.8.0_101-b13)中得到解决。

0

你好,我找到了一些可能会对你有帮助的东西 :)

在 Oracle 的最近补丁说明中,它指出这是上一个 Java 补丁中的一个 bug 问题。

个人建议你找第三方下载之前的 Java 版本。

这里是补丁说明的链接 http://www.oracle.com/technetwork/java/javase/8u20-relnotes-2257729.html

希望你能解决这个问题!


Mitchell,感谢您的意见,但是这些发布说明涉及Java 8 Update 20,并且在阅读了它们之后,我没有看到任何关于Java Web Start应用程序延迟的参考。 - Rob

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接