JVM でのメモリ管理について読んでいますが、オブジェクトへの参照がなくなった場合、ガベージ コレクションが行われます。たとえば、私はプログラムを持っています
public test {
public static void main(String[ ] args) {
String name = "hello";
for (int i =0 ; i < 5; i++) {
System.out.println(i);
}
}
}
ご覧のとおり、String name
はどこにも使用されていないため、その参照は最後まで保持され、ガベージ コレクションは行われません。
今私が持っています、
String name = "hello"
String name2 = name.substring(1,4)//"ell"
ここでも、 の参照はhello
常に存在している必要があり、ガベージ コレクションを使用することはできませんname2
。
では、参照はあるが廃止された、つまりコードで使用されなくなったこれらString
またはいずれかがガベージコレクションされるのはいつですか?objects
配列を縮小するとメモリ リークが発生するシナリオが 1 つあります。したがって、配列の参照を null に設定することは、これらの古い参照をガベージ コレクションする良い方法です。