Java编译预热_技术或实用程序可以最大程度地减少Java“预热”时间?

您的问题不是类加载,而是“及时”编译。

尝试 -XX:CompileThreshold=1

这将迫使Java在其首次运行时编译所有内容。这会稍微减慢代码的启动速度,但不会减慢VM代码的速度(因为安装Java时会编译该代码)。有一个开放的bug,允许Java以类似的方式编译自定义JAR,并将结果保存以供以后执行,这将大大减少此开销,但是没有压力很快要修复此bug。

第二种选择是向该应用发送5 000条虚假消息以“对其进行预热”。将此作为“确保正确设置所有内容”来出售。

[编辑]预编译类中的一些背景信息:类数据共享

您可能要尝试使用IBM的Java版本,因为您可以在此处向共享池添加更多类:类数据共享概述

[EDIT2]要回答kittylyst提出的问题:的确,这将使用仅使用一次的方法快速填充代码缓存。甚至可能使您的整个应用变慢。

如果将其设置为较低的值,则应用程序的启动时间可能会变得非常慢。这是因为JIT优化+运行已编译的代码比在解释模式下运行一次代码要昂贵得多。

这里的主要问题是代码仍然“按时”编译。只要您无法至少运行一次您需要的每种方法,该应用程序每次遇到从未编译过的内容时,都会“启动”几毫秒。

但是,如果您有RAM,则您的应用程序很小,或者您可以增加代码缓存的大小,并且不介意启动时间很慢,可以尝试一下。通常,默认设置非常好。

你可能感兴趣的:(Java编译预热)