Minor question about Segmented Code Cache (http://openjdk.java.net/jeps/197)(关于分段代码缓存(http://openjdk.java.net/jeps/197))的次要问题)
问题描述
我看到这个JEP(http://openjdk.java.net/jeps/197)介绍了三种代码缓存。
对我来说最明显的是-XX:NonNMethodCodeHeapSize
。这是一个处理JVM内部数据的应用程序。
NonProfiledCodeHeapSize
和ProfiledCodeHeapSize
有什么区别。该文件说:
分层编译还引入了一种新的编译代码类型:检测的编译代码(分析代码)。
我的理解是,这里的指令插入是指带有计数器的,所以按照某种逻辑来假设这真的是编译的代码?另一个是C2
?
推荐答案
在分层编译中,配置代码表示收集执行统计信息(计数器和类型信息)的即时编译方法,这些方法可在以后用于在不同层上重新编译。
非配置代码不仅是C2代码。它还包括本机方法的已编译包装器,以及没有执行统计信息(Tier 1)的由c1编译的方法,例如不会从重新编译中受益的简单方法,如getters/setters。
参见codeBlob.hpp
:
// CodeBlob Types
// Used in the CodeCache to assign CodeBlobs to different CodeHeaps
struct CodeBlobType {
enum {
MethodNonProfiled = 0, // Execution level 1 and 4 (non-profiled) nmethods (including native nmethods)
MethodProfiled = 1, // Execution level 2 and 3 (profiled) nmethods
NonNMethod = 2, // Non-nmethods like Buffers, Adapters and Runtime Stubs
All = 3, // All types (No code cache segmentation)
NumTypes = 4 // Number of CodeBlobTypes
};
};
这篇关于关于分段代码缓存(http://openjdk.java.net/jeps/197))的次要问题的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:关于分段代码缓存(http://openjdk.java.net/jeps/197))的次
- Java包名称中单词分隔符的约定是什么? 2022-01-01
- 从 finally 块返回时 Java 的奇怪行为 2022-01-01
- Safepoint+stats 日志,输出 JDK12 中没有 vmop 操作 2022-01-01
- 将log4j 1.2配置转换为log4j 2配置 2022-01-01
- Jersey REST 客户端:发布多部分数据 2022-01-01
- value & 是什么意思?0xff 在 Java 中做什么? 2022-01-01
- Eclipse 插件更新错误日志在哪里? 2022-01-01
- C++ 和 Java 进程之间的共享内存 2022-01-01
- 如何使用WebFilter实现授权头检查 2022-01-01
- Spring Boot连接到使用仲裁器运行的MongoDB副本集 2022-01-01