Home /Java/ 가비지컬렉터(GC)
Post
Cancel

/Java/ 가비지컬렉터(GC)



Garbage Collection(GC)


  • 메모리 관리 방법중 하나
  • 시스템에서 더이상 사용하지 않는 동적 할당된 메모리 블럭을 찾아
    자동으로 다시 사용 가능한 자원으로 회수하는 것


➡️

  • 가비지 컬렉터
    가비지컬렉션을 수행하는 부분



Garbage Collector의 원리



  • 메모리가 부족할 때 필요없는 부분을 정리해주는 프로그램


프로그램을 실행할 때 메로리를 관리하는 OS에 프로그램 실행에 필요한 메모리를 요청하면,
이 메모리를 어디에 저장할지 그 주소(offset주소)를 할당한다.

이 할당된 메모리들은 기존에 가리키고 있던 메모리를 새롭게 선언되거나 형변환이 되면서
다른 곳을 가리키게 되면서 주소를 잃어버리게 되고 다시 찾을 수 없게 되면서
정리되지 않은 메모리가 생겨버리게 되기 때문에
프로그램이 돌아가면 필연적으로 ‘가비지’가 발생하게 된다.


➡️

  • 가비지 컬렉터(+목적)
    가비지를 다른 용도로 사용할 수 있도록 메모리 해제를 시킨다.
  • 자바에서의 가비지 컬렉터
    • JVM은 메모리를 부여받고 프로그램을 실행하다가 메모리가 부족해지는 순간이 오면 추가적으로 메모리를 더 요청한다.
      요청하는 바로 이때 가비지 컬렉터가 실행된다.
    • 가비지 컬렉션은 실행 중인 JVM 내부에서 일어난다.
    • 클래스 인스턴스는 사용자 코드에 의해 명시적으로 생성되고 가비지 컬렉션에 의해 자동으로 파괴되게 된다.



Garbage Collector의 역할


  1. 메모리 할당
  2. 사용중인 메모리 인식
  3. 사용하지 않는 메모리 인식
  • JVM의 Heap 영역에서 동적으로 할당했던 메모리 영역 중 필요 없게 된 메모리를
    주기적으로 삭제하는 프로세스



Garbage Collector의 알고리즘


Mark And Sweep 알고리즘

순회를 통해
메모리가 어떤 객체를 참조하고 있는지 마킹하고
참조하고 있지 않은 메모리들을 제거 후 분산된 메모리를 Heap의 시작 주소로 모아 정리하는 알고리즘




(참고링크)



공부한 내용을 여러글과 책 읽은 내용을 바탕으로 정리하고 있습니다.
좋은 글로 저의 공부에 도움을 주시는 분들께 감사드립니다.

This post is licensed under CC BY 4.0 by the author.