关于分段代码缓存(http://openjdk.java.net/jeps/197))的次要问题

Minor question about Segmented Code Cache (http://openjdk.java.net/jeps/197)(关于分段代码缓存(http://openjdk.java.net/jeps/197))的次要问题)

本文介绍了关于分段代码缓存(http://openjdk.java.net/jeps/197))的次要问题的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我看到这个JEP(http://openjdk.java.net/jeps/197)介绍了三种代码缓存。

对我来说最明显的是-XX:NonNMethodCodeHeapSize。这是一个处理JVM内部数据的应用程序。

我不明白的是NonProfiledCodeHeapSizeProfiledCodeHeapSize有什么区别。该文件说:

分层编译还引入了一种新的编译代码类型:检测的编译代码(分析代码)。

我的理解是,这里的指令插入是指带有计数器的,所以按照某种逻辑来假设这真的是编译的代码?另一个是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))的次要问题