これらは, Platform MXBean 機能のためのクラス. より具体的に言うと, メモリ関係の Platform MXBean 機能へのアクセスを提供するブローカー的なクラス (java.lang.management.MemoryPoolMXBean や java.lang.management.MemoryManagerMXBean から使用される). (See: here for details) (See: here for details)
保守運用機能のためのクラス (関連する JMM 用の Java クラスからのみ使用される) (See: java.lang.management.MemoryPoolMXBean, java.lang.management.MemoryManagerMXBean). (See: here and here for details)
メモリ関係の Platform MXBean に関する機能を納めた名前空間(AllStatic クラス)
((cite: hotspot/src/share/vm/services/memoryService.hpp))
// VM Monitoring and Management Support
class MemoryService : public AllStatic {
各 MemoryPool オブジェクトのファクトリメソッドを提供しているほか, 全ての MemoryPool オブジェクトや MemoryManager オブジェクトにアクセスするための関数を提供している (HotSpot 内で MemoryPool や MemoryManager オブジェクトを使いたくなった時には MemoryService クラスを介してこれらにアクセスする模様).
See: here for details
MemoryService クラスを簡単に利用するための補助クラス(StackObjクラス).
GC の開始時/終了時には MemoryService::gc_begin()/MemoryService::gc_end() を呼び出す必要があるが, この処理をソースコード上のスコープに合わせて自動で行うことができる.
(なお, MemoryService::gc_begin()/MemoryService::gc_end() は, JMM 用の統計情報を取得したり DTrace や JMM のフック処理を呼び出すための関数)
((cite: hotspot/src/share/vm/services/memoryService.hpp))
class TraceMemoryManagerStats : public StackObj {
コード中で TraceMemoryManagerStats 型の局所変数を宣言するだけ.
各種 GC 処理中の処理を開始する地点に局所変数として宣言されている.
コンストラクタで MemoryService::gc_begin() を呼び出し, デストラクタで MemoryService::gc_end() を呼び出す.
See: here for details
See: here for details
See: here for details
See: here for details
See: here for details
See: here for details
See: here for details
See: here for details
MemoryService クラス内で使用される補助クラス.
GC thread の合計数を数えるための Closure.
((cite: hotspot/src/share/vm/services/memoryService.cpp))
class GcThreadCountClosure: public ThreadClosure {
MemoryService::set_universe_heap() 内で(のみ)使用されている.
GcThreadCountClosure::do_thread() ではカウンタをインクリメントしているだけ (このメソッドが各 GC スレッドに対して一度ずつ呼び出されるので合計スレッド数が数えられる).
((cite: hotspot/src/share/vm/services/memoryService.cpp))
void GcThreadCountClosure::do_thread(Thread* thread) {
_count++;
}
See: here for details
This document is available under the GNU GENERAL PUBLIC LICENSE Version 2.