
ランタイムJVM解析ツールキット - クラス、メソッド、フィールド、定数プール、バイトコードを検査するためのもの
splinter は JVM 分析ツールキットであり、ユーザーが実行時にクラス、メソッド、フィールド、定数プール、バイトコードを表示できるようにします。これは OpenJDK ビルド 22.0.2+9-70 で作成およびテストされました。
通常、JVM 用の分析ツールキットと言えば、JNI や JVMTI を使用するものと思われるかもしれませんが、splinter は違います!
splinter は実際には外部ツールであり、現在次の機能を備えています:
Method および ConstMethod 上でバイトコードをライブでデコードできる長期的な目標は、ランタイム JVM 分析ツールキットとして以下の機能を提供することです:

現在のコードベースは基礎的なものですが、それでも機能します
これを執筆している時点(3/11/2026)では、splinter は以下を実行できます:
javaw.exe プロセスに自動的にアタッチするjvm.dll を特定するjvm.dll から HotSpot がエクスポートした VMStruct テーブルを解決するClassLoaderDataGraph を介してロードされたクラスをリストするKlass および InstanceKlass を検査するInstanceKlass::_fieldinfo_stream から HotSpot フィールドストリームをデコードするMethod / ConstMethod を検査するsplinter の最も優れた点の 1 つは、クラスファイル形式のバイトコードを使用せず、実際には HotSpot インタプリタからのランタイムバイトコード命令を使用し、後でシンボリックなクラス/メソッド/フィールド参照として読み戻すことです。
これは、HotSpot が実際に実行時に一部の命令を書き換える傾向があるため重要です。現在、以下の処理を行っています:
invokedynamic エンコード済みインデックスfast_iaccess_0fast_igetfieldfast_aldcinvokehandle