我们的软件仍然支持JVM8部署的客户端,所以我们仍然在使用Java8编译。我想知道Java9中引入的分段代码缓存JEP197是否可以在较旧的编译上运行-或者要求源代码也可以在Java 9+上编译。
很多在线资源都描述了它有多棒,但我找不到明确的证据表明Java 8代码是否可以利用这一功能。
分段代码缓存在Java 8编译的代码上工作吗?
发布于 2020-07-19 22:31:42
免责声明:我的答案既没有实际生活经验,也没有测试过。这只是我在进一步阅读分段代码缓存的问题后的假设。
我的结论是:如果您在jre9和jre10中运行jdk8编译的应用程序,则应该使用分段代码缓存。但我不知道它是否提供了承诺的性能改进,因为我不知道jdk9是否在字节码中为jit编译器添加了提示。
得出我的结论的是,代码缓存本身被用作编译后的本机代码的存储。因此,它是jre的一个组成部分,如下所述:
代码缓存是
虚拟机存储生成的本机代码的内存区域。它被组织为位于连续内存块顶部的单个堆数据结构。
代码缓存被分成多个段,每个段包含特定类型的编译代码,而不是具有单个代码堆。这种分段可以更好地控制JVM内存占用,缩短编译方法的扫描时间,显著减少代码缓存的碎片,并提高性能。
由于答案的性质相当模糊,我强烈建议任何人不要把它当作事实。相反,我看到了两个选择:
https://stackoverflow.com/questions/62977932
复制相似问题