我需要尝试改善一个相对较大的无头 Java应用程序调整VM /启动器参数的启动时间(正在进行单独的工作来实现调整实际代码的相同目标)。
选择的VM是标准的OpenJDK Java-8。
openjdk version "1.8.0_102-internal"
OpenJDK Runtime Environment (build 1.8.0_102-internal-b14, profile compact3)
OpenJDK VM (build 25.102-b14, interpreted mode)
主机是运行Linux的嵌入式ARM7(32位)。
model name : ARMv7 Processor rev 5 (v7l)
BogoMIPS : 38.40
如上所述,目标是缩短启动时间。运行时性能是可以接受的。
有人可以建议对VM本身进行调整以显着缩短交货时间。
注意:我知道“ -client”选项可能带来的好处,我将尽快对其进行试验。有没有可能的弊端?任何其他?
澄清:
“有趣的数字”是从目标启动到应用程序准备好接受命令所需的时间。
这由三部分组成:
Java SE 8 Embedded具有紧凑型配置文件。您的JVM启动日志建议您的应用程序使用compact3(这是3中最大的)。
每个概要文件实质上是一组Java API(以及相关的类),并且compact3包含来自compact2的所有API 及其附加,而compact2包含来自compact1的所有API 及其附加。
从指定配置文件之外使用API时,运行javac -profile 2
(甚至运行-profile 1
)会显示错误。jdeps -P
将显示您使用的每个API的个人资料。也许您可以避免使用较高配置文件中的API,从而将您的应用程序编译为较低配置文件API。这将导致引导程序/系统类加载器加载的类减少,从而加快JVM的启动速度。有关更多信息,请参见此处。
本演示文稿中的广泛知识(以及关于Compact Profiles的讨论)
我不确定是否存在将JVM 9成功移植到ARM的端口。Azul Systems的Zulu仅支持Java 8。OpenJ9是Eclipse的努力,但是它的ARM端口似乎仍在试验中。看一下,也许您可以为您的应用程序吸引一些注意力。
它将需要在代码库中创建模块,并且仅使用应用程序使用的模块来构建JRE。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句