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対象となる。