[Java]ゴミ収集器


ごみ収集器


Gabege Collector自動管理プログラムの実行に必要なメモリ.
ごみ収集器とは何ですか.
プログラムを開発すると유효하지 않은 메모리のゴミが発生します.
Java開発を使用すると、開発者はメモリにアクセスできません.즉, 더이상 사용하지 않는 메모리를 자동으로 회수해주는 것이 가비지 컬렉터이다.Cシリーズプログラム
開発者はメモリを自分で管理する必要があります
メモリ管理が適切でない場合、メモリの漏洩が発生し、他のプログラムの操作が停止する可能性があります.
Javaプログラム
開発者はメモリにアクセスできません.
そのため、開発者はメモリを管理できません.가비지 컬렉터가 불필요한 메모리를 회수해서 메모리를 최적화 함なぜなら、JVMのゴミ収集器は不要なメモリを自動的にクリーンアップするからです.
でもJavaでは명시적으로 불필요한 데이터를 표현하기 위해서 일반적으로 null을 선언コードの例を見てみましょう
Person person = new Person();
person.setName("Hi");
person = null;

// 가비지 발생
person = new Person();
person.setName("Hi, Java");
既存のhiによって生成されたpersonオブジェクトは参照されず、使用されないため、不要なオブジェクトとなる.
Javaでは、このようなメモリの漏洩を防ぐために、ゴミ収集器は定期的にチェックしてメモリをクリアします.
オブジェクトの多くは使い捨てで、メモリに長期にわたって保持されることはめったにありません.
さらに説明するとjavaを使うときにnewというキーワードがよく使われます.
そのnewキーワードはhip領域で動的にメモリを割り当てる役割を果たし、このような動的に割り当てられたメモリを自動的に解放します.これがGCです.
動作原理
基本的にJVMは実行時に動作します.
ゴミ収集を実行するにはいくつかの条件があり、以下の条件のいずれかを満たす限り、JVMはゴミ収集器(GC)を実行する.
  • OS割り当てのシステムメモリ不足(メモリ割り当て)
  • が管理するhipが使用するメモリは、許容しきい値を超える(hip内のオブジェクトにゴミが見つかった)
  • .
  • プログラマーがGC(見つかったゴミを処理してhipメモリを回収する)を直接実行する場合(JavaでSystem.gc()メソッドを使用しないほうがよい)
  • )
    ごみ収集プロセス
  • Marking
  • ゴミ収集器はメモリの中でlive object(使用するオブジェクト)をチェックし、アクセスできないオブジェクト(使用しないオブジェクト)とは何かをマークします.
  • Normal Deletion
  • ゴミ収集器アクセス不可オブジェクト(使用しないオブジェクト)を削除します.
  • Deletion with Compacting
  • ゴミ収集器の一部は、メモリをより効率的に書き込むために、アクセス不可能なオブジェクトを削除しながら圧縮される.

  • ごみ収集用語のクリーンアップ
  • Young Generation
  • 新しいオブジェクトが初めて作成されたときのスタックメモリの領域
    MinorGCが発生した場合は、アクセス不可オブジェクト(非アクティブオブジェクト)を削除します.
    生存オブジェクト(参照オブジェクト)はOld Generation
  • に移動する.
  • Old Generation
  • Long生存オブジェクト(長い間参照されていたオブジェクト)の空間
    Old世代が満たされると、
  • 個のMajor GCが生成されます
  • Permanent Generation
  • Javaアプリケーションに必要なクラスのメタデータを格納する場所
    Java 8ベースの永続的な生成は、スタックメモリではなくローカルメモリによって管理される
  • Minor GC
  • Young世代のGC
  • Major GC
  • Old世代によるGC
  • Full GC
  • すべてのHeapメモリ
  • をクリア
  • Stop the World Event
  • MinorGC発生時にグローバルイベントを停止
    MinorGCを実行すると、例外なくすべての適用スレッドが停止します.