文字列リテラルのガベージ コレクション
Q1: 文字列がコンパイル時にリテラルとして定義されている場合 (例: String str = "java")、ガベージ コレクションされますか?
通常はそうではありません。コード オブジェクトにはリテラル String オブジェクトへの参照が含まれており、アクセス可能に保たれています。ガベージ コレクションは、コード オブジェクトが到達不能になった場合にのみ発生します。
Q2: intern メソッドが使用されている場合 (例: String str = new String("java").intern())、それはガベージになりますか? collected?
返されるオブジェクトは、クラスのロード時にインターンされる「java」文字列リテラルと同じになります。したがって、ガベージ コレクションの対象にはなりません。ただし、文字列リテラルと同一ではないインターンされた文字列は、到達不能になったときにガベージ コレクションされる可能性があります。
Q3: String クラスがアンロードされるときにのみリテラルがガベージ コレクションされるのは意味がありますか?
いいえ。 String クラスは Java 仮想マシンにとって必須であり、アンロードされる可能性はほとんどありません。そうでないと記載されている情報源は正しくありません。
免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。
Copyright© 2022 湘ICP备2022001581号-3