2

次のSCJP 模擬試験の質問では、学生は(0) とマークされた行のうち、ガベージ コレクションString bの候補となる正確な行を見つけるように求められます。

public class Q76a9 {
    static String f() {
        String a = "hello";
        String b = "bye"; // (0)
        String c = b + "!"; // (1)
        String d = b; // (2)
        b = a; // (3)
        d = a; // (4)
        return c; // (5)
    }

    public static void main(String[] args) {
        String msg = f();
        System.out.println(msg); // (6)
    }
}

正解が 6 であることがわかった後、 String Literal Poolに格納されているString オブジェクトが参照を失った場合、Poolに保存されることを期待しないという結論に達しました。参照されていない場合、ガベージ コレクションの対象となります。

本当?はいの場合、リテラル プールメカニズムは参照なしで文字列をどのように扱いますか?

編集:質問は、コンパイラの最適化が行われていないことを前提としています。

4

0 に答える 0