Javaのガベージコレクションとは何ですか?

Javaのガベージコレクションとは何ですか?

Javaでのガベージコレクション プログラムがメモリ管理を自動的に実行するプロセスです。ガベージ コレクター (GC) は、未使用のオブジェクトを見つけて削除し、メモリを再利用します。 Java では、オブジェクトの動的なメモリ割り当ては、新しいメソッドを使用して実現されます。 opera一部のメモリを使用する tor であり、オブジェクトを使用するための参照が存在するまでメモリは割り当てられたままになります。

オブジェクトへの参照が存在しない場合、そのオブジェクトはもう必要ないとみなされ、オブジェクトによって占有されていたメモリを再利用できます。 Java が割り当て解除を自動的に処理するため、オブジェクトを明示的に破棄する必要はありません。

これを実現する技術は次のように知られています。 ガベージコレクション。 メモリの割り当てを解除しないプログラムは、システムに割り当てるメモリがなくなったときに最終的にクラッシュする可能性があります。 これらのプログラムには、 メモリリーク。

ガベージコレクション Java 自動的に起こる プログラムの存続期間中、メモリの割り当てを解除する必要がなくなるため、メモリ リークが回避されます。

C 言語では、free() 関数を使用して動的に割り当てられたメモリの割り当てを解除するのはプログラマの責任です。 ここが Java メモリ管理の重要な点です。

注: すべてのオブジェクトは次のように作成されます。 ヒープセクション 記憶の。詳細については、 later チュートリアル。

例: Java でガベージ コレクターのメカニズムを学習するには

ステップ1) 以下をコピーしますwing エディターにコードを入力します。

class Student{
int a;
int b;
  public void setData(int c,int d){
    a=c;
    b=d;
  }
  public void showData(){
    System.out.println("Value of a = "+a);
    System.out.println("Value of b = "+b);
  }
  public static void main(String args[]){
    Student s1 = new Student();
    Student s2 = new Student();
    s1.setData(1,2);
    s2.setData(3,4);
    s1.showData();
    s2.showData();
    //Student s3;
    //s3=s2;
    //s3.showData();
    //s2=null;
    //s3.showData();
    //s3=null;
    //s3.showData();
  }
}

ステップ2) コードを保存、コンパイル、実行します。 図に示すように、XNUMX つのオブジェクトと XNUMX つの参照変数が作成されます。


ガベージコレクターの仕組み

ステップ3) 行番号 20,21,22、XNUMX、XNUMX のコメントを解除します。 コードを保存、コンパイル、実行します。

ステップ4) 以下の図に示すように、XNUMX つの参照変数が同じオブジェクトを指しています。

ガベージコレクターの仕組み

ステップ5) 行番号 23 と 24 のコメントを外します。コードをコンパイル、保存、実行します。

ステップ6) 以下の図に示すように、s2 は null になりますが、s3 は依然としてオブジェクトを指しているため、Java ガベージ コレクションの対象にはなりません。


ガベージコレクターの仕組み

ステップ7) 行番号 25 と 26 のコメントを外します。コードを保存、コンパイル、実行します。

ステップ8) この時点では、オブジェクトを指す参照は存在しないため、ガベージ コレクションの対象になります。 これはメモリから削除され、元に戻す方法はありません。

ガベージコレクターを学ぶ

Javaでオブジェクトを削除するにはどうすればよいですか?

1) オブジェクトをガベージ コレクションの対象にしたい場合は、その参照変数を null に割り当てます。

2) プリミティブ型はオブジェクトではありません。 null を割り当てることはできません。

Javaでオブジェクトを削除する方法