コンスタントプールエントリの共有
コンスタントプールに含まる「メソッド名」、「フィールド名」、「クラス名」をコンスタントプールの必須エントリ名と共有することで、コンスタントプールを削減できます。
フィールド/メソッド名の共有/短縮
必須エントリである文字列をフィールド / メソッド名にすると、コンスタントプールエントリがひとつ減ります。この過程を「共有」と呼びます。
「共有」できなかったフィールド / メソッドは、名前を短くすることでコンスタントプールのサイズを削減できます。
文字列がコンスタントプールの必須エントリとなる例
- 画面に表示する定数文字列
- 呼び出す Java の API メソッド名
- クラスファイルの属性名
クラス名の短縮
クラス名についても、フィールド / メソッド名と同様にコンスタントプールの文字列定数として含まれるので、共有・短縮によりサイズ圧縮が見込めます。
ただし、クラス名はファイル名になります。ファイル名は JAR 圧縮の対象なので、名前の短縮を優先させる方が効果的です。