このコード フラグメントの場合:
Vector v = new Vector(10);
for (int i = 1; i<100; i++)
{Object o = new Object();
v.add(o);
o = null;
}
100 個のオブジェクトへのすべての参照が null に設定されているため、リークは発生せず、GC によって収集されます。
でも、
Vector v = new Vector(10);
for (int i = 1; i<100; i++)
{Object o = new Object();
v.add(o);
}
v= null;
ベクトルへの参照を無効にしただけなので、リークが発生しますが、100 個のオブジェクトへの参照はすべて残っているため、システムにとって役に立たない間は GC が収集されません。
Java でのメモリリークを正しく理解しているかどうかを調べるのを手伝ってください。よろしくお願いします!