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

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

尝试 -XX:CompileThreshold=1

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

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

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

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

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

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

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

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值