Android - Garbage Collection(GC)

2023. 11. 8. 15:22·Android
728x90

Garbage Collection

Java는 Garbage Collection(GC)을 이용하여 메모리를 관리한다.

필요에 따라 GC가 실행되고, 그 과정에서 사용하지 않는 객체들을 정리해 준다.

Garbage Collection의 동작 원리

아래 기술되는 내용은 GC의 모든 것을 다루지 않는다.

그저 GC라는 것이 있고 그것이 어떤 방식으로 돌아간다- 하는 간략한 요약 정도일 뿐이다.

 

1. 자바에서는 Garbage Collection(또는 GC)를 이용하여 메모리를 정리한다.

1-1. GC는 더이상 사용되지 않는 쓰레기 객체들을 정리하는 작업을 한다.

1-2. GC는 필요에 따라 자동으로 실행된다. (2-2의 경우에 실행된다.)

 

2. GC에 의해 관리되는 메모리는 Young과 Old로 나뉜다.

2-1. Young은 3단계로 다시 나뉜다. (Eden, Survivor 1, Survivor 2)

2-2. 객체가 GC에 의해 정리되지 않고 오래 살아남을수록 Eden -> Survivor 1 -> Survivor 2 -> Old로 이동된다.

2-2. 각 메모리 영역에 할당된 메모리가 적정 수치를 넘었을 때 GC가 실행된다.

 

3. GC는 Mark & Sweep 방식으로 동작한다.

3-1. GC가 실행되면, 아래와 같이 외부에서 접근할 수 있는 객체들을 GC Root로 설정한다.

- 실행 중인 쓰레드 (Active Thread)

- 정적 변수 (Static Variable)

- 로컬 변수 (Local Variable)

- JNI 레퍼런스 (JNI Reference)

3-2. GC Root에서 출발하여, 참조되고 있는 변수들을 순차적으로 Mark한다. (Mark)

3-3. Mark되지 않은 객체들은 쓰레기 객체로 판정하고 정리한다. (Sweep)

 

4. GC가 발생하는 동안은 stop-the-world 상태가 된다.

4-1. 객체 참조를 정확히 판단해야 하기 때문에, GC 과정에서 참조가 변경되면 안 된다.

4-2. 참조를 유지하기 위해 GC 실행시간 동안은 모든 작업이 멈춘다. (stop-the-world)

728x90
LIST

'Android' 카테고리의 다른 글

안드로이드 개발자 면접 질문 리스트  (1) 2025.02.18
Android Spinner  (3) 2023.12.04
Android - Manifest & Components  (3) 2023.11.08
Android Layout  (1) 2023.09.04
안드로이드 Activity 생명주기  (1) 2023.08.29
'Android' 카테고리의 다른 글
  • 안드로이드 개발자 면접 질문 리스트
  • Android Spinner
  • Android - Manifest & Components
  • Android Layout
Mr. Joo
Mr. Joo
  • Mr. Joo
    삽질의 시작
    Mr. Joo
  • 전체
    오늘
    어제
    • 분류 전체보기 (217) N
      • Flutter (70)
      • Android (9)
      • Swift (5) N
      • React (11)
      • 인공지능 (4)
      • CS (10)
      • 개발 뉴스 (105) N
      • IT 기기 (1)
      • 알면 유용한 정보 (2)
  • 인기 글

  • 태그

    오늘의 개발 뉴스
    Flutter
    뉴스 모음
    개발 이슈
    개발
    개발 뉴스
    DART
    오늘의 이슈
    앱
    뉴스
    앱개발
    플러터
    오늘의 뉴스
    Dart 기초
    오늘의 기술 뉴스
    기술
    이슈
    기술 뉴스
    react
    앱 개발
  • 최근 댓글

  • 최근 글

  • 250x250
  • hELLO· Designed By정상우.v4.10.3
Mr. Joo
Android - Garbage Collection(GC)
상단으로

티스토리툴바