새소식

CS

[CS] 가비지 컬렉션이란

  • -

Garbage Collection이란?

JVM의 Heap 영역에서 동적으로 할당했던 메모리 중 필요 없게 된 메모리 객체(garbage)를 모아 주기적으로 제거하는 프로세스

 

가비지 컬렉션은 자바 메모리 관리 방법 중 하나입니다!

 

자바에서 의미하는 가비지(Garbage)란

💡일반적으로 Heap 영역에서 동적으로 할당했던 메모리 중 필요없게 된 메모리 객체

 

 

가비지 판단 방법

가비지 컬렉션은 특정 객체가 가비지인지 아닌지 판단하기 위해 도달성입니다

즉,도달능력이라는 개념을 적용한다고 볼 수 있습니다.

객체에 대해 레퍼런스가 있다면 Reachable로 구분되고, 객체에 유효한 레퍼런스가 없다면 Unreachable로 구분해 수거합니다

  • Reachable : 객체가 참조되고 있는 상태
  • Unreachable : 객체가 참조되고 있지 않은 상태

 

가비지 컬렉션 장점

  • 개발자가 동적으로 할당한 메모리 영역 전체를 완벽하게 관리 하지 않아도 됩니다
  • 유효하지 않은 포인터 접근이나 메모리 누수 같은 버그를 줄이거나 막을 수 있습니다
    • 유효하지 않은 포인터 접근
      : 이미 동적할당한 메모리를 해제한 영역에 접근하게 되는 버그
    • 이중 해제
      : 이미 해제된 메모리를 또 다시 해제하는 오류를 줄일 수 있습니다
    • 메모리 누수
      : 더이상 사용하지않는 메모리 영역을 해제하지 않고 남겨진 것이 쌓이게 되면 메모리 누수가 일어납니다메모리  누수가 지속되면 메모리 고갈로 인하여 프로그램이 중단 될 수 있습니다

이러한 GC의 장점이 있는 반면 GC 단점도 있겠죠?

 

가비지 컬렉션의 단점

  • 어떤 메모리를 해제할지 결정하는데 사용되는 알고리즘의 비용이 많이 듭니다
  • 가비지 컬렉션이 행동하는 타이미잉나 GC의 점유 시간을 사전에 예측하기 어려워 제어가 어렵습니다
  • 할당된 메모리가 해제되는 시점을 알 수 없습니다
  • 가바지 컬렉션이 동작하는 동안에는 다른 동작을 멈추기 때문에 오버헤드가 발생 합니다(STW)

 

STW(Stop The World)

💡가비지 컬렉션을 수행하기 위해 자바 가상 머신이 프로그램 실행을 멈추는 현상

자바 가비지 컬렉션의 동작방식

Mark And Sweep 

 

 

가비지 컬렉션은 Unreachable한 객체를 청소하기 위해 Mark-Sweep 알고리즘을 사용합니다
GC가 될 대상 객체를 식별(Mark) 하고 제거(Sweep)하며 객체가 제거되어 단편화된 메모리 영역을 앞에서 부터 채워 나가는 작업을 수행합니다

 

 

'CS' 카테고리의 다른 글

[CS] 라이브러리와 프레임 워크는 어떤 차이가 있을까?  (1) 2024.04.28
[CS] 동기와 비동기  (0) 2024.04.16
[CS] Restful API 란?  (0) 2024.03.19
[CS] About HTTP 메서드  (3) 2024.03.18
[CS] Axios 란 무엇일까?  (0) 2024.02.20
Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.