javaの弱い参照について説明する機会があったのだけど、実は本で読んだっきりで、自分で試したことがなかったので、説明もどうもマト外れ的になってしまいました。
そこで、ちょっと調べてみました。
どうも、リストにはない感じですね(すみません。)。マップにあるみたい、そして、こんな感じ。
Map<String, String> map = new WeakHashMap<String, String>();
String[] targets = new String[10];
for (int i = 0; i < targets.length; i++) {
targets[i] = new String(i + "");
map.put(targets[i], "test" + i);
}
System.out.println(map.toString());
// 普通の参照を消して、GC走らせると・・・
targets[1] = null;
System.gc();
System.out.println(map.toString());
こうすると、こんな感じになるっす。
{8=test8, 9=test9, 4=test4, 5=test5, 6=test6, 7=test7, 0=test0, 1=test1, 2=test2, 3=test3}
{8=test8, 9=test9, 4=test4, 5=test5, 6=test6, 7=test7, 0=test0, 2=test2, 3=test3}
マップに参照されているのに、他の参照がなくなると、消えてしまうというわけだね。
ごめんね、Tさん、適当なこと言って・・・
0 件のコメント:
コメントを投稿