본문 바로가기
JAVA

GC(Garbage Collector) 란?

by sangfeeeeel 2021. 10. 20.

Garbage Collector(GC)란?


  • 프로그램이 동적으로 할당했던 메모리 영역 중에서 필요없게된 영역을 해제하는 기능
  • Ex) new 라는 키워드가 힙 영역에서 동적으로 메모리를 할당해주는 역할을 하고, 그렇게 동적으로 할당된 메모리를 자동으로 해제해주는 것이 GC.
    💡
    Stack : 정적으로 할당한 메모리 영역, 원시 타입의 데이터가 값과 함께 할당, Heap영역에 생성된 Object 타입 데이터의 참조 값 할당
    💡
    Heap : 동적으로 할당한 메모리 영역으로, 모든 Object 타입의 데이터가 할당, Heap영역의 Object를 가리키는 참조 변수가 Stack에 할당

GC는 언제 동작하는가


  • GC는 JVM에 올라가 있기 때문에 기본적으로 런타임시에 동작.

GC 과정


  1. Garbage Collector가 Stack의 모든 변수를 스캔하면서 각각 어떤 객체를 참조하고 있는지 찾아서 마킹한다.
  1. Reachable Object가 참조하고 있는 객체도 찾아서 마킹한다.(Mark)
  1. 마킹되지 않은 객체를 Heap에서 제거한다.(Sweep)

'JAVA' 카테고리의 다른 글

Java의 실행과정과 JVM  (0) 2021.09.18
Optional<T> 는 무엇인가..?  (0) 2021.07.14
hasNext() 와 next() 메서드  (0) 2021.04.29
JAVA - 향상된 for문  (0) 2021.04.26