ガベージ コレクションと文字列リテラル
ガベージ コレクションは Java のメモリ管理の基本的な部分です。ただし、文字列リテラル ガベージ コレクションの微妙な違いを理解するのは難しい場合があります。この記事は、このトピックに関するよくある質問を明確にすることを目的としています。
1.リテラルとして定義された文字列のガベージ コレクション
文字列がコンパイル時にリテラルとして定義されている場合 (String str = "java" など)、通常、文字列はガベージ コレクションされません。このような文字列への参照はコード オブジェクト内に保持され、到達可能性が保証されます。
2.インターン メソッドを使用した文字列のガベージ コレクション
インターン メソッドは、文字列が存在しない場合はインターンされた文字列のプールに文字列を格納し、既存の文字列または新しくインターンされた文字列への参照を返します。文字列リテラルの場合、「java」リテラルはクラスのロード時にインターンされます。したがって、同じ値を含む新しい文字列オブジェクトに対して intern を使用すると、インターンされた "java" 文字列が返されます。ただし、リテラルとは異なり、非リテラルのインターン文字列は、到達不能になるとガベージ コレクションが可能です。
3.リトクラルのガベージ コレクションと文字列クラスのアンロード
文字列リテラルは、String クラスがアンロードされるときにのみガベージ コレクションされるという概念は正しくありません。 String クラスは Java のコアに深く組み込まれているため、アンロードされる可能性はほとんどありません。したがって、文字列リテラルは、参照元のコード オブジェクトに到達できる限り存続します。
以上が以下に、条件を満たすタイトルのオプションをいくつか示します。 核心的な質問に焦点を当てます。 * 文字列リテラルは Java でガベージ コレクションされる予定ですか? * ガベージ コレクションは文字列リテラルでどのように機能しますか。の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。