首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >是否可能启用本机代码的缓存?

是否可能启用本机代码的缓存?
EN

Stack Overflow用户
提问于 2020-06-10 13:35:00
回答 1查看 607关注 0票数 0

有没有办法让JVM缓存它生成的优化的本机代码到文件中,以提高以后运行的性能?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-06-10 18:48:13

从JDK 9开始就有提前编译(AOT)。参见9月295

注意:这与GraalVM本地图像不一样。

JIT编译代码的缓存是有问题的,原因有几个。

  • HotSpot编译器在很大程度上依赖于投机优化。这些优化基于某些运行时条件,这些条件在一次运行到另一次运行时可能并不总是相同的。
  • JIT编译的代码可能引用特定的对象和类,它可能依赖于仅在运行时已知值的常量,它的内存地址可能直接内联到指令流中。这使得缓存的代码无法直接重用。这个问题可以通过额外的间接水平来解决,这会影响性能。

这就是为什么几个JVM供应商采取了另一种方法:缓存运行时概要数据而不是最终代码。然后,可以使用从上一次运行中收集的概要文件数据来尽快重新编译最热门的方法(一旦满足了所有先决条件),而无需在解释器中运行方法来再次收集概要文件。

至少有两个已知的解决方案:

Zing还拥有编译存储技术来重用编译后的代码本身。它可以与ReadyNow一起使用!

有一个JEP草案可以在OpenJDK中添加JWarmup支持。

下面是关于不错的博客文章编译的HotSpot、JIT缓存和相关技术。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62304946

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档