0
は、私はこのコードを入力したインターネットで多くのことを探索してアンドロイドapplication.Soの開発にWeakReference
を使用する方法を知りたい:WeakReferenceがオブジェクトの値を返すのはなぜですか?
{
String kk = "Test";
WeakReference<String> kkRef = new WeakReference<String>(kk);
System.out.println(kk);
System.out.println(kkRef.get());
kk = null;
System.gc();
System.out.println(kk);
System.out.println(kkRef.get());
}
GC
に適格にkk
オブジェクトを仮定し、しかし、コンソール出力で私がなぜそれがnull
を返しませんでしについてweakReference
を読んでkkRef.get()
はまだnull
を返すことになって値を返すようですか?
しかし、強い参照を削除する 'kk = null'を入力しました。 –
@MohamedFadelBuffon:あなたは*その*強い参照を削除しました。文字列リテラルはコード内に存在します。 Javaでは、代入( 'String kk =" Test "')はオブジェクトのコピーを作成しません。文字列リテラルはガベージコレクションできません。 'new'キーワードを使って自分で作成したオブジェクトのインスタンスを使ってみてください。 – CommonsWare
ありがとう、私のために働く:)。しかし、あなたは 'literal'が意味するものを私にexpalinしてもらえますか?ありがとうございます。 –