본문 바로가기
영상리뷰

[영상리뷰] 우아한테크_던 : JVM의 Garbage Collector

by amoomar 2022. 1. 22.
반응형

[10분 테코톡] 👌던의 JVM의 Garbage Collector - YouTube

 

 

 

영상을 본인이 이해하기에 조금 더 쉬운 방향으로 정리하며 내용을 곱씹을 목적으로 포스팅 되었다. GC도구에 대한 내용은 첨부되지 않았다.

 

 

 


 

 

1. What?

: "JVM의 Garbage Collector"란 무얼 말하고자 하는것인가?

 

1) JVM(Java Virtual Machine)

자바의 구동프로그램 중 하나로, 메모리적재(불러오기), Ram영역 관리, 소스코드를 읽고 실행시키는 기능을 한다.

즉, 운영체제의 메모리 영역에 접근하여 메모리를 관리할 수 있는 프로그램으로, 메모리 관리와 Garbage Collector을 수행하는 역할을 한다.

 

2) Garbage Collector : 이하 GC

메모리를 간단하게 관리하기 위한 목적으로 생기게 된 개념이다.
동적으로 할당한 메모리 영역(Heap) 중 사용하지 않는 영역을 탐지하여 해제하는 기능을 한다.

 

즉, GC란 메모리 관리 방법 중의 하나로, 프로그래머가 동적으로 할당한 메모리 영역 중 더 이상 쓰이지 않는 영역을 자동으로 찾아내어 해제하는 기능이다.

<나무위키 참조>

3) Heap & Stack

  1. Heap : 동적으로 할당한 메모리 영역이다. 모든 Object타입의 데이터가 Heap에 할당된다. 이때 Object를 가리키는 참조변수는 Stack에 할당한다.
  2. Stack : 정적으로 할당한 메모리 영역이다. 원시타입의 데이터가 값과 함께 할당된다. Heap영역에 생성된 Object타입의 데이터 참조값을 할당한다.

 

하단의 블로그 링크를 확인하면, 위 내용을 전체적으로 이해하는데에 있어 큰 도움이 된다.

 

https://wikidocs.net/81943

 

07. 참조 타입 (reference type) <작성됨>

참조 타입은 객체(Object)의 번지를 참조(저장)하는 타입이다. 메모리 번지값을 통해 객체를 참조하게 된다. 참조 타입의 종류 문자열, 배열, 열거, 클래스 ...

wikidocs.net

 

 


 


2. How?

: GC의 과정

 

1) mark & Sweep

: GC의 과정은 mark와 Sweep으로 진행된다.

 

  1. mark : GC가 Stack의 모든 변수를 스캔하면서 각각 어떤 객체를 참조하고 있는지 찾아서 마킹(식별)한다. Reachable Object가 참고하고 있는 객체 또한 찾아서 마킹(식별)한다.
    해당 과정의 이해를 돕기위한 사진 첨부
  2. Sweep : 마킹되지 않은 객체를 Heap에서 제거한다. (사용되지 않는 객체는 쓸어서 제거한다.) 해당 과정이 완료되면 메모리는 아래와 같은 상태가 된다.
    해당 과정의 이해를 돕기위한 사진 첨부

 

 

 

 

 


 



3. When?

: GC의 발생은 자동으로, 즉 수시로 이루어진다고 이야기 할 수 있다. Heap의 메모리가 발생하는한 GC는 계속적으로 끊임없이 작동한다. 이때 CG의 진행은 minormajor로 구분되어 발생한다. 해당 과정을 이해하기 쉽도록 정리된 블로그의 포스팅주소를 아래에 첨부하였다. 상단의 "old영역"까지만 읽더라도 본 포스팅에서 이해하고자 하는 가벼운 정도의 지식을 가질 수 있다고 판단하였다.

 

 

https://donghyeon.dev/java/2020/03/31/%EC%9E%90%EB%B0%94%EC%9D%98-JVM-%EA%B5%AC%EC%A1%B0%EC%99%80-Garbage-Collection/

 

자바의 JVM 구조와 Garbage Collection

JVM 메모리 모델

donghyeon.dev

 

 

 

 

 

 


 

반응형