Javaのガベージコレクションとは何ですか?
Java のガベージ コレクションとは
Java でのガベージ コレクション プログラムがメモリ管理を自動的に実行するプロセスです。ガベージ コレクター (GC) は、未使用のオブジェクトを見つけて削除し、メモリを再利用します。 Java では、オブジェクトの動的メモリ割り当ては、一部のメモリを使用する new 演算子を使用して実現され、メモリは、オブジェクトの使用に関する参照が存在するまで割り当てられたままになります。
オブジェクトへの参照がない場合、そのオブジェクトは不要になったと見なされ、オブジェクトが占有していたメモリを回収できます。 Java が割り当て解除を自動的に処理するため、オブジェクトを明示的に破棄する必要はありません。
これを実現する技術は、ガベージ コレクションとして知られています。 .メモリの割り当てを解除しないプログラムは、システムに割り当てるメモリがなくなると、最終的にクラッシュする可能性があります。これらのプログラムには、メモリ リークがあると言われています。
Java のガベージ コレクションは自動的に行われます これにより、メモリの割り当てを解除する必要がなくなり、メモリ リークが回避されます。
C 言語では、free() 関数を使用して動的に割り当てられたメモリの割り当てを解除するのはプログラマの責任です。これが、Java メモリ管理が導くところです。
注:すべてのオブジェクトは ヒープ に作成されます メモリのセクション。これについては、後のチュートリアルで詳しく説明します。
例:Java でガベージ コレクターのメカニズムを学ぶ
ステップ 1) 次のコードをエディターにコピーします。
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) コードを保存、コンパイル、実行します。図に示すように、2 つのオブジェクトと 2 つの参照変数が作成されます。
ステップ 3) 行番号 20、21、22 のコメントを外します。コードを保存、コンパイル、実行します。
ステップ 4) 下の図に示すように、2 つの参照変数が同じオブジェクトを指しています。
ステップ 5) 23 行目と 24 行目のコメントを外します。コードをコンパイル、保存、実行します
ステップ 6) 下の図に示すように、s2 は null になりますが、s3 はまだオブジェクトを指しており、Java ガベージ コレクションの対象にはなりません。
ステップ 7) 25 行目と 26 行目のコメントを外します。コードを保存、コンパイル、実行します
ステップ 8) この時点で、オブジェクトを指す参照はなく、ガベージ コレクションの対象になります。メモリから削除され、元に戻す方法はありません。
Java でオブジェクトを削除する方法
1) オブジェクトをガベージ コレクションの対象にしたい場合は、その参照変数を null に割り当てます。
2) プリミティブ型はオブジェクトではありません。 null を割り当てることはできません。
Java