Javaの一定プールから文字列を削除する方法
Javaでは、定数プールの文字列を直接消すことはできません。定数プールとは、コンパイル時に文字定数が格納される特別なメモリ領域であり、その内容は不変です。一度定数プールに文字列が erstellt und hineingelegt されれば、定数プールから取り除くことはできません。
ただし、文字列変数の参照をnullに設定することで文字列定数プール内の文字列を間接的に消去できます。文字列への参照が一切なくなると文字列はガベージオブジェクトとなり、ガベージコレクタによって適切なタイミングで回収されて、定数プール内の対応する文字列定数が解放されます。
たとえば
String str = "Hello";
str = null; // 清除对字符串的引用
// 接下来,垃圾回收器会在适当的时机回收"Hello"字符串常量
注意すべき点は、文字列定数プール内の文字列はグローバルに共有されており、異なる場所で同じ内容の文字列を作成しても、定数プールでの参照は同一となる。このため、参照が1つでも存在している限り、定数プール内の文字列がガベージコレクションされない。