これらは, JIT Compiler 用のクラス. より具体的に言うと, メソッドをコンパイルするかどうかの条件/閾値を管理するクラス (See: here for details).
((cite: hotspot/src/share/vm/runtime/compilationPolicy.hpp))
// The CompilationPolicy selects which method (if any) should be compiled.
// It also decides which methods must always be compiled (i.e., are never
// interpreted).
JIT Compiler 用のクラス. メソッドをコンパイルするかどうかの条件/閾値を管理するクラス(の基底クラス).
なお, このクラス自体は abstract class であり, 実際に使われるのはサブクラス (See: here for details).
((cite: hotspot/src/share/vm/runtime/compilationPolicy.hpp))
class CompilationPolicy : public CHeapObj {
See: here for details
CompilationPolicy クラスのサブクラス.
なお, このクラス自体は abstract class であり, 実際に使われるのはサブクラス.
((cite: hotspot/src/share/vm/runtime/compilationPolicy.hpp))
// A base class for baseline policies.
class NonTieredCompPolicy : public CompilationPolicy {
See: here for details
NonTieredCompPolicy クラスの具象サブクラス (See: here for details).
なお, このクラスは CompilationPolicyChoice オプションが 0 の場合にのみ使用される (そして Tiered Compilation 非使用時のデフォルトは 0). (See: compilationPolicy_init())
((cite: hotspot/src/share/vm/runtime/compilationPolicy.hpp))
class SimpleCompPolicy : public NonTieredCompPolicy {
CompilationPolicy クラスの _policy フィールド (static フィールド) に(のみ)格納されている.
compilationPolicy_init() 内で(のみ)生成されている. そして, この関数は現在は以下のパスで(のみ)呼び出されている.
(HotSpot の起動時処理) (See: here for details) -> Threads::create_vm() -> init_globals() -> compilationPolicy_init()
See: here for details
C2 JIT Compiler 用の補助クラス (#ifdef COMPILER2 時にしか定義されない).
C2 JIT Compiler 用の CompilationPolicy クラス(= メソッドをコンパイルするかどうかの条件/閾値を管理するクラス) (See: here and here for details).
なお, このクラスは CompilationPolicyChoice オプションが 1 の場合にのみ使用される. (See: compilationPolicy_init())
((cite: hotspot/src/share/vm/runtime/compilationPolicy.hpp))
// StackWalkCompPolicy - existing C2 policy
#ifdef COMPILER2
class StackWalkCompPolicy : public NonTieredCompPolicy {
CompilationPolicy クラスの _policy フィールド (static フィールド) に(のみ)格納されている.
compilationPolicy_init() 内で(のみ)生成されている. そして, この関数は現在は以下のパスで(のみ)呼び出されている.
(HotSpot の起動時処理) (See: here for details) -> Threads::create_vm() -> init_globals() -> compilationPolicy_init()
See: here for details
NonTieredCompPolicy クラス内で使用される補助クラス.
ある程度の時間間隔で InvocationCounter の値を半減させていくためのクラス (より正確には, そのための機能を納めた名前空間(AllStatic クラス)).
((cite: hotspot/src/share/vm/runtime/compilationPolicy.cpp))
//
// CounterDecay
//
// Interates through invocation counters and decrements them. This
// is done at each safepoint.
//
class CounterDecay : public AllStatic {
NonTieredCompPolicy::do_safepoint_work() 内で(のみ)使用されている.
(なお, この関数は毎回の Safepoint 処理の先頭で呼び出されている (See: here for details))
現状では, 約 CounterHalfLifeTime 秒ごとに各 InvocationCounter の値を半分にしている.
CounterDecay クラスの処理は, 約 CounterDecayMinIntervalLength ミリ秒ごとに実行され, 一度に全クラス数の (CounterDecayMinIntervalLength * 1e-3 / CounterHalfLifeTime) *100% を処理する (これにより約 CounterHalfLifeTime 秒で全クラスの処理が完了する).
See: here for details
See: here for details
See: here for details
See: here for details
See: here for details
See: here for details
This document is available under the GNU GENERAL PUBLIC LICENSE Version 2.