これらは, ユーザーが指定した HotSpot のコマンドラインオプションを管理するためのクラス (それに関連して JVMTI エージェントの情報も管理している).
HotSpot のシステムプロパティ (= java.lang.System.getProperty() メソッドで取得できる情報) を管理するためのクラス.
1つの SystemProperty オブジェクトが 1つのシステムプロパティに対応する.
((cite: hotspot/src/share/vm/runtime/arguments.hpp))
// Element describing System and User (-Dkey=value flags) defined property.
class SystemProperty: public CHeapObj {
Arguments クラスの _system_properties フィールド (static フィールド) に(のみ)格納されている.
以下の箇所で(のみ)生成されている.
See: here for details
保守運用機能のためのクラス (JVMTI 機能用のクラス).
HotSpot がロードした JVMTI エージェントの情報を表す. 1つの AgentLibrary オブジェクトが 1つの JVMTI エージェントに対応する.
((cite: hotspot/src/share/vm/runtime/arguments.hpp))
// For use by -agentlib, -agentpath and -Xrun
class AgentLibrary : public CHeapObj {
各 AgentLibraryList オブジェクトの _first フィールドおよび _last フィールドに(のみ)格納されている.
(正確には, これらのフィールドは AgentLibrary の線形リスト(の先頭と最後)を格納するフィールド. AgentLibrary オブジェクトは _next フィールドで次の AgentLibrary オブジェクトを指せる構造になっている. その AgentLibraryList オブジェクト用の AgentLibrary オブジェクトは全てこの線形リストに格納されている)
以下のファクトリメソッドが用意されており, その中で(のみ)生成されている.
-Xrun オプションで指定された JVMTI エージェントを表す AgentLibrary オブジェクトが生成され, Arguments::_libraryList につながれる.
-javaagent オプションで指定された JVMTI エージェントの情報を _agentList につなぐ.
Dynamic Attach 機能で指定された JVMTI エージェントの情報を _agentList につなぐ.
See: here for details
保守運用機能のためのクラス (JVMTI 機能用のクラス).
AgentLibrary オブジェクトを束ねておくためのコンテナクラス.
((cite: hotspot/src/share/vm/runtime/arguments.hpp))
// maintain an order of entry list of AgentLibrary
class AgentLibraryList VALUE_OBJ_CLASS_SPEC {
以下の箇所に(のみ)格納されている.
-Xrun オプションで指定された JVMTI エージェントを格納する.
-agentlib オプション, -agentpath オプション, 及び Dynamic Attach 機能で動的にロードされた JVMTI エージェントを格納する.
(Arguments クラスの _libraryList フィールドおよび _agentList フィールドは, ポインタ型ではなく実体なので, Arguments オブジェクトの生成時に一緒に生成される)
See: here for details
ユーザーが指定した HotSpot のコマンドラインオプションを管理するクラス (より正確には, そのための機能を納めた名前空間(AllStatic クラス)).
コマンドラインオプションをパースするメソッドや, パースした各オプション値へのアクセサメソッド等を提供している.
((cite: hotspot/src/share/vm/runtime/arguments.hpp))
class Arguments : AllStatic {
Arguments::parse() で, コマンドラインオプションのパースが行われる.
パースした各オプションの値は, HotSpot 内の様々な箇所で参照されている (#TODO).
See: here for details
Arguments クラス内で使用される補助クラス.
HotSpot の system class path 情報 (boot class path 情報) を作成するための補助クラス(StackObjクラス).
なお, system class path 情報は以下の 4つの情報に基づいて作成される.
(なおコメントによると, AllStatic クラスにしてもいいがコマンドラインオプションのパースが終わった後は使われない, とのこと)
((cite: hotspot/src/share/vm/runtime/arguments.cpp))
// Constructs the system class path (aka boot class path) from the following
// components, in order:
//
// prefix // from -Xbootclasspath/p:...
// endorsed // the expansion of -Djava.endorsed.dirs=...
// base // from os::get_system_properties() or -Xbootclasspath=
// suffix // from -Xbootclasspath/a:...
//
// java.endorsed.dirs is a list of directories; any jar or zip files in the
// directories are added to the sysclasspath just before the base.
//
// This could be AllStatic, but it isn't needed after argument processing is
// complete.
class SysClassPath: public StackObj {
Arguments::parse_vm_init_args() 内で(のみ)使用されている.
See: here for details
This document is available under the GNU GENERAL PUBLIC LICENSE Version 2.