首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >9+分段代码缓存是否需要Java 9+Compilation?

9+分段代码缓存是否需要Java 9+Compilation?
EN

Stack Overflow用户
提问于 2020-07-19 16:29:59
回答 1查看 205关注 0票数 1

我们的软件仍然支持JVM8部署的客户端,所以我们仍然在使用Java8编译。我想知道Java9中引入的分段代码缓存JEP197是否可以在较旧的编译上运行-或者要求源代码也可以在Java 9+上编译。

很多在线资源都描述了它有多棒,但我找不到明确的证据表明Java 8代码是否可以利用这一功能。

分段代码缓存在Java 8编译的代码上工作吗?

EN

回答 1

Stack Overflow用户

发布于 2020-07-19 22:31:42

免责声明:我的答案既没有实际生活经验,也没有测试过。这只是我在进一步阅读分段代码缓存的问题后的假设。

我的结论是:如果您在jre9和jre10中运行jdk8编译的应用程序,则应该使用分段代码缓存。但我不知道它是否提供了承诺的性能改进,因为我不知道jdk9是否在字节码中为jit编译器添加了提示。

得出我的结论的是,代码缓存本身被用作编译后的本机代码的存储。因此,它是jre的一个组成部分,如下所述:

代码缓存是

虚拟机存储生成的本机代码的内存区域。它被组织为位于连续内存块顶部的单个堆数据结构。

代码缓存被分成多个段,每个段包含特定类型的编译代码,而不是具有单个代码堆。这种分段可以更好地控制JVM内存占用,缩短编译方法的扫描时间,显著减少代码缓存的碎片,并提高性能。

来源:https://docs.oracle.com/en/java/javase/11/vm/java-hotspot-virtual-machine-performance-enhancements.html

由于答案的性质相当模糊,我强烈建议任何人不要把它当作事实。相反,我看到了两个选择:

  1. 使用jdk9和target 1.8构建应用程序,以使其与java 8兼容。
  2. 的功能与第一个选项相同,但使用它来比较jdk8和jdk9在jre9上编译的应用程序的性能和监控代码缓存。否则你不能确定它是否真的使用了JEP 197。
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62977932

复制
相关文章

相似问题

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