すべての Java 開発者は、Java オブジェクトが使用されなくなるとガベージ コレクションされることを知っています。JVM がガベージ コレクションのために選択する必要があるオブジェクトを識別する方法を知りたいです。(たとえば、10個のオブジェクトがある場合.10のうち、2つのオブジェクトがガベージコレクションされている場合、jvmがその2つのオブジェクトを見つける方法)。
JVMは「マークアンドスイープ」アルゴリズムを使用します(正しい場合)。
1)たとえば、以下の文字列オブジェクトのシナリオを提供します
class Sample{
public static void main(Strings args[]){
String s1=new String("10");
String s2=new String("20");
String s3=new String("30");
String s4=new String("40");
String s5=new String("50");
String s6=new String("60");
String s7=new String("70");
s1=null; //now s1 is eligible for gc collection
s2=null; //now s2 is eligible for collection
}
}
//s1 と s2 は gc コレクションの対象となります。null 参照 (s1、s2) を明示的に作成するとnullになりますが、ヒープに割り当てられたメモリはどうなりますか? それはfreedupでしょうか?