Java実行時の定数プールは何を保存していますか?
Javaのランタイム定数プールには、以下の内容が格納されています。
- Javaの文字列定数(例:「Hello, World!」)は、プログラムで繰り返し使用するために定数プールに保存されます。
- Javaプログラムでのクラスとインターフェースの完全修飾名は、それぞれのクラスやインターフェースが定数プールに保存されます。
- ランタイム定数:基本データ型の定数(例:int、float、double、booleanなど)およびそれらに対応するラッパークラスの定数(例:Integer、Float、Double、Booleanなど)を含む。
- シンボル参照:クラス、インターフェース、フィールド、およびメソッドのシンボル参照(例:クラスの完全限定名、フィールド名、メソッド名など)は、定数プールに格納され、実行時に対応する実体を解決するために使用されます。
- いくつかの一般的なリテラル(例:整数、浮動小数点数、文字、ブール値など)は、プログラム内で繰り返し使用するために定数プールに保存されます。
Javaの実行時定数プールはコンパイル時に定まりますが、これはJava仮想マシン仕様で定義されるクラスファイルの定数プールとは異なります。クラスの読み込み時には、クラスファイル内の定数プールが実行時定数プールに読み込まれ、いくつかの処理や最適化が行われます。