本文介紹了關(guān)于分段代碼緩存(http://openjdk.java.net/jeps/197))的次要問題的處理方法,對大家解決問題具有一定的參考價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)吧!
問題描述
我看到這個JEP(http://openjdk.java.net/jeps/197)介紹了三種代碼緩存。
對我來說最明顯的是-XX:NonNMethodCodeHeapSize
。這是一個處理JVM內(nèi)部數(shù)據(jù)的應(yīng)用程序。
我不明白的是NonProfiledCodeHeapSize
和ProfiledCodeHeapSize
有什么區(qū)別。該文件說:
分層編譯還引入了一種新的編譯代碼類型:檢測的編譯代碼(分析代碼)。
我的理解是,這里的指令插入是指帶有計數(shù)器的,所以按照某種邏輯來假設(shè)這真的是編譯的代碼?另一個是C2
?
推薦答案
在分層編譯中,配置代碼表示收集執(zhí)行統(tǒng)計信息(計數(shù)器和類型信息)的即時編譯方法,這些方法可在以后用于在不同層上重新編譯。
非配置代碼不僅是C2代碼。它還包括本機方法的已編譯包裝器,以及沒有執(zhí)行統(tǒng)計信息(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
};
};
這篇關(guān)于關(guān)于分段代碼緩存(http://openjdk.java.net/jeps/197))的次要問題的文章就介紹到這了,希望我們推薦的答案對大家有所幫助,