Notice
Recent Posts
Recent Comments
Link
«   2025/04   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30
Tags
more
Archives
Today
Total
관리 메뉴

Done is better than perfect

[Java] 가비지 컬렉터 본문

Java

[Java] 가비지 컬렉터

jihye0 2024. 10. 21. 19:43

Java의 가비지 컬렉터란?

개발자가 메모리를 직접 해제하지 않아도 가비지 컬렉터가 메모리를 주기적으로 정리해 줍니다

 

 

그 전에 JVM에서 Heap 메모리가 어떤 구성으로 되어있는지 알아봅시다

 

 

JVM에는 Heap 메모리 영역이 존재합니다.

Young: 비교적 젊은 애들 

- eden : young 중에서도 젊은 애들

- Survivor: eden에서 살아남은 애들

Old: 특정 횟수 이상 살아남은 애들 

Permanent(Metaspace): 클래스 정보, 메서드 정보 등이 있다. 

 

((JVM 옵션을 통해 힙 메모리 크기를 설정할 수 있다~~))

 

Young Generation 이 가득 찼을 때 수행 됩니다 -> Minor GC: 시간이 적게 걸림

Old Generation 이 가득 찼을 때 수행 됩니다-> Major GC: 시간이 오래 걸림

 

가비지 컬렉터의 동작방식

<Mark & Sweep>

1. Mark 단계

프로그램에서 접근할 수 있는 객체(참조되고 있는 객체) / 그렇지 않은 객체를 구분하기

2. Sweep 단계

필요 없는거 제거하는 것임 

 

-> 하지만 이 방식에는 문제점이 있습니다 

1) Memory Fragmentation 

2) Stop the World

3) 느린 속도 

 

그래서 뭐 최신 가비지 컬렉터가 나왔다고 합니다

-Mark-Compact 알고리즘

-G1 GC

-Shenandoah, ZGC 등등이 있습니다

'Java' 카테고리의 다른 글

[Java] Java가 실행되는 과정  (0) 2024.10.21
[Java] 특징 정리  (2) 2024.10.10
[Java] 기본 자료형 wrapper class 차이  (2) 2024.09.09
[Java] HashMap 정리  (2) 2024.09.06
[JAVA] priority Queue  (0) 2024.03.15