반응형

GC 3

4편. JVM 메모리와 GC - 왜 객체는 바로 지워지지 않을까?

3편에서는 JVM 실행 모델을 통해 인터프리터와 JIT가 어떻게 공존하며 실행 성능을 끌어올리는지 살펴봤습니다.이번 편에서는 JVM 이야기에서 절대 빠질 수 없는 주제, 바로 GC(Garbage Collection)를 다룹니다.“객체를 안 쓰는데, 왜 메모리는 바로 안 줄어들까?”이 질문에 답하기 위해서는 GC를 “기능”이 아니라 JVM 메모리 관리 전략으로 바라봐야 합니다.GC는 ‘청소기’가 아니다흔히 GC를 이렇게 이해합니다.“안 쓰는 객체를 정리해주는 기능”틀린 설명은 아니지만, 공식 문서 기준으로 보면 매우 부족한 설명입니다.GC의 핵심 역할은 이것입니다.GC는 메모리를 즉시 회수하는 것이 아니라, 재사용 가능 상태로 만든다.JVM은 OS처럼 메모리를 매번 반환하지 않습니다. 한 번 확보한 힙 영..

Backend Core/JVM 2026.01.25

2편. JVM 런타임 데이터 영역 - Heap, Stack, Method Area는 왜 그렇게 나뉘었을까?

1편에서 우리는 JVM이 단순한 “자바 실행기”가 아니라, 명세로 정의된 실행 환경이라는 점을 확인했습니다.이번 편에서는 JVM 명세가 정의한 가장 핵심적인 구조, 바로 JVM 런타임 데이터 영역(Runtime Data Areas)을 살펴봅니다.“왜 JVM 메모리는 이렇게 복잡하게 나뉘어 있을까?”이 질문에 답할 수 있으면, GC·메모리 누수·스레드 문제를 훨씬 정확하게 바라볼 수 있게 됩니다.JVM 메모리는 “하나”가 아니다많은 입문 자료에서는 JVM 메모리를 단순히 이렇게 설명합니다.“객체는 힙에 저장된다”물론 틀린 말은 아니지만, 공식 문서 기준에서는 JVM 메모리를 훨씬 명확하게 구분합니다.JVM 명세는 실행 중인 JVM이 다음과 같은 런타임 데이터 영역을 가져야 한다고 정의합니다.HeapJava..

Backend Core/JVM 2026.01.25

1편. JVM이란 무엇인가 - 우리는 무엇 위에서 코드를 실행하고 있을까?

Kotlin, Spring, Spring Boot, JPA, Transaction까지 공식 문서를 따라가다 보면 결국 이런 질문으로 돌아오게 됩니다.“이 모든 코드는 어디에서, 어떻게 실행되고 있는가?”그 답이 바로 JVM(Java Virtual Machine)입니다. 이번 시리즈는 막연한 JVM 설명이 아니라, 공식 문서가 정의한 JVM을 기준으로 우리가 운영하고 튜닝하는 JVM을 이해하는 것을 목표로 합니다.JVM은 “자바 실행기”가 아니다보통 JVM을 이렇게 요약합니다.“자바 바이트코드를 실행해주는 가상 머신”하지만 공식 문서 기준에서 JVM은 단순 실행기가 아닙니다. JVM은 다음을 명확히 규정합니다.어떤 메모리 구조를 가져야 하는가클래스는 어떤 절차로 로딩되는가스레드와 동기화는 어떤 규칙을 따라..

Backend Core/JVM 2026.01.25
반응형