[Java] 자바 기초정리(2)

김나우·2022년 4월 29일
0

Java의 실행방식

  1. 자바 컴파일러(javac)가 자바 소스코드를 읽어 바이트코드(.class)로 변환
  2. Class Loader를 통해 Class 파일들을 JVM에 로딩
  3. 로딩된 Class들을 Execution engine을 통해 해석
  4. 해석된 바이트코드는 Runtime Data Area에 배치되어 실질적으로 수행

GC란 무엇인가?

GC는 힙 영역에서 사용하지 않는 객체들을 제거하는 작업을 총징

이 객체를 제거하는 작업이 필요한 이유는 자바는 개발자가 메로리를 직접 해제해줄 수 없어서.

Minor GC

Minor GC는 young 영역에서 일어남

Minor GC는 Eden 영역이 가득 참에서 부터 시작, Eden 영역에서 참조가 남아 있는 객체를 mark

survivor 영역으로 복사, 그리고 Eden 영역을 비움. Survivor 영역도 가득차면 같은 방식으로

다른 Survivor 영역에 복사하고 비움. 이를 반복하다 계속 살아남는 객체는 old 영역으로 이동

Major GC

old 영역에서 일어남

위와 반대로 삭제되어야 하는 객체를 mark, 그리고 지움(Sweep)

메모리는 단편화 된 상태이므로 이를 한 군데에 모아주는 것을 Compaction, Compact라고 함

그래서 Mark-Sweep-Compact 알고리즘이라고 함.

profile
안녕하세요

0개의 댓글