23. 메모리 관리와 가비지 컬렉션
23.1. 메모리 관리 개념
자바에서 메모리 관리는 JVM(Java Virtual Machine)이 담당합니다. JVM은 기본적으로 힙(Heap) 영역에서 객체를 관리합니다. 힙 영역은 크게 영구(Permanent) 영역, 노출(Young) 영역, 그리고 노출 영역의 서바이버(Survivor) 영역과 테넌트(Tenured) 영역으로 나눠집니다. 객체가 생성되면 노출 영역에 할당되고, 시간이 지남에 따라 서바이버와 테넌트 영역으로 이동하게 됩니다.
23.2. 가비지 컬렉션 동작 원리
가비지 컬렉션(GC)은 더 이상 사용되지 않는 객체를 자동으로 회수하여 메모리를 관리하는 프로세스입니다. GC는 JVM에 의해 실행되며, 객체가 더 이상 참조되지 않을 때 메모리를 회수합니다. 가비지 컬렉션의 동작 원리는 마크-스위프(Mark-Sweep) 알고리즘, 콤팩트(Compact) 알고리즘, 복제(Copy) 알고리즘 등 여러 가지가 있습니다.
23.3. 메모리 누수와 해결 방법
메모리 누수는 프로그램이 필요하지 않은 메모리를 계속 점유하고 있는 상태를 말합니다. 자바에서는 가비지 컬렉터가 대부분의 메모리 관리를 담당하지만, 프로그래머가 실수로 발생시킬 수 있는 메모리 누수 상황도 있습니다. 이를 해결하기 위해서는 더 이상 사용되지 않는 객체에 대한 참조를 해제하거나, 약한 참조(Weak Reference)를 사용하는 등의 방법이 있습니다.
23.4. 가비지 컬렉터의 종류 및 튜닝
자바에서는 여러 가지 종류의 가비지 컬렉터가 있습니다. 대표적으로 Serial GC, Parallel GC, Concurrent Mark Sweep(CMS) GC, G1(Garbage First) GC 등이 있습니다. 각 가비지 컬렉터는 특성과 성능상의 차이가 있으며, 애플리케이션의 요구사항에 따라 적절한 가비지 컬렉터를 선택할 필요가 있습니다. 가비지 컬렉터의 튜닝은 힙 크기 조절, GC 알고리즘 변경, GC 동작 시간 조절 등의 방법으로 진행될 수 있습니다.
'GD's IT Lectures : 기초부터 시리즈 > 자바(JAVA) 기초부터 ~' 카테고리의 다른 글
[자바(JAVA)] 자바와 XML 처리 (0) | 2023.04.30 |
---|---|
[자바(JAVA)] 자바 네이티브 인터페이스 (JNI) (0) | 2023.04.28 |
[자바(JAVA)] 자바 어노테이션 (0) | 2023.04.28 |
[자바(JAVA)] Reflection API (0) | 2023.04.28 |
[자바(JAVA)] 날짜와 시간 처리 (0) | 2023.04.28 |
댓글