Skip to content

20251225_オブジェクトの参照とGCについて

GCとは、ガベージコレクションのこと。

java
for(int i=0;i<3;i++){
	String s = new String("hello");
}

このプログラムでは、計3回の繰り返し処理の度に、String型のオブジェクトがメモリ領域に確保される。しかし、繰り返し回①が終了し、次の繰り返し回②へ進むと、①で生成されたオブジェクトは参照を失い、その後参照されることはない。オブジェクトが参照されなくなると、GCの対象となり、GCが実施されたタイミングでメモリ領域が解放される。3回の繰り返し処理が終了した時点で、それまでに3つのString型オブジェクトが生成されたことになるが、これらのオブジェクトは今後参照されることはないため、GCの対象である。

java
String ref = null;

for(int i=0;i<3;i++){
	String s = new String("hello");
	ref = s;
}

このプログラムでは事情が変わってくる。 最後の繰り返し回で生成されたString型オブジェクトは、繰り返し処理終了後も変数refで参照されるため、GCされない。最初の2回の繰り返しで生成されたオブジェクトは、各繰り返し処理回が終了後は参照されることはないので、GC対象となる。