文字列オブジェクトプールがPermGCに存在し、文字列インターンが実行されると、まずプールをチェックして、同等の文字列オブジェクトが存在するかどうかを確認し、存在しない場合は作成しますプールされたインスタンスへの参照を返します。PermGCの文字列オブジェクトプールについて
しかし、ここに私の最初の質問があります。
オブジェクトはヒープ上、特に若い世代が最初に作成されると思います。少数のガベージコレクションの間に生き残れば、古い世代に移動します。どのように文字列オブジェクトがPerm GCに存在するプールに移動するのか誰にも説明できますか?
2番目の質問:
のString = "テスト"。 s = "test1";
「test1」を参照に再割り当てして「test1」を引き続き使用すると、若い世代で作成された「テスト」がガベージコレクションされることになりますか?
第3質問: 文字列オブジェクトプールはどのようにランタイム定数プールに関連していますか?
ありがとうございました。
あなたは、文字列s = new String( "test")のみと言っていますか?若い世代に最初に文字列オブジェクトを作成しますか? – user826323
@ user826323それは、若い世代のオブジェクトになります。そして、 'intern()'を呼び出すと、そのインスタンス 's'は、同等のStringがまだ存在しない場合、permgenプールに入れられます。**または**以前にプールされたインスタンスが返されます。 2つの参考資料を残す。しかし、 'String s =" test ";'が ''コード内にあれば、それはソースコードリテラルなので効果的に '' test ''をプールに入れます。 –