您必须与Oracle签订合同以支持非公共可用的Java版本,例如Java6以1.6.0_45结尾,但在支持下您可以使用1.6.0_80。我们的目标是保持受支持和公共可用的Java平台。因此,我们希望将基于jnlp的RIA应用程序从Java6迁移到java8平台。在迁移测试中,我们遇到了性能问题。我们尝试在Java 8 poor GUI performance compared to Java 6中模拟此问题,但我们意识到该问题与该问题无关。
在介绍之后,为了找出问题的根本原因,我们使用与jdk捆绑在一起的java mission control(jmc)对应用程序进行了概要分析。当我们分析在工作空间启动的应用程序时,我们看不到任何性能下降。然后我们意识到问题仅发生在JAVAWS环境中。我们的应用程序在Java环境中按预期运行,但在Javaws环境中,某些GUI确实很慢,它使响应时间增加了6秒。
我的第一个问题是,我们如何剖析javaws启动的Java应用程序?因为要使用jmc,我们需要设置一些JVM参数(java-vm-args="-XX:+UnlockCommercialFeatures -XX:+FlightRecorder"
),但是javaws不支持此JVM参数。您可以在here中找到受支持的列表
我的第二个问题是,为什么应用程序在两个环境(java和javaws)下不能完全相同?我们检查了应用程序的签名和未签名版本,两者的情况相同。顺便说一下,我们的应用程序使用all-permission
。
最佳答案
您可以通过在其中键入以下内容将想要的任何JVM参数传递给javaws:
Java控制面板> Java>视图>运行时参数
至于性能不佳,您是指应用程序加载时间吗?还是开始申请后还很慢?
如果说的是加载时间,那么可以,javaws会慢一些(慢3-5秒左右),因为它必须与Internet联系以检查jar文件是否被列入黑名单或证书是否已过期。我不确定这几秒钟后到底在做什么,但我同意这会降低性能,我希望有人能对此有所了解。