Notice
Recent Posts
Recent Comments
Link
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 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
- 인증
- 보안
- 네트워크
- Spring Boot
- spring event
- http
- 클린코드
- 백엔드개발자
- 웹개발
- 백엔드개발
- Spring
- 웹성능최적화
- devops
- AbstractAggregateRoot
- 프론트엔드
- java
- CS
- DEVIEW2023
- SnowFalke
- 백엔드
- 데이터베이스
- 성능최적화
- db
- 캐시
- redis
- JPA
- 인프라
- interceptor
- 백엔드기초
- 세션
Archives
- Today
- Total
이것저것 개발기록
자바 가비지 컬렉션(GC)의 원리와 메모리 관리 본문
"C언어처럼 메모리를 직접 해제하지 않아도 되는 이유!"
자바의 자동 메모리 관리 시스템인 가비지 컬렉션(Garbage Collection)의 내부를 들여다봅니다.
1. 힙(Heap) 메모리 영역의 분할
GC는 효율적인 관리를 위해 힙 영역을 Young Generation과 Old Generation으로 나눕니다. 대부분의 객체는 금방 생성되었다가 사라진다는 가설(Weak Generational Hypothesis) 때문이죠.
2. GC 동작의 핵심: Mark and Sweep
1. Mark: 사용 중인 객체(Reachable)를 찾아 표시합니다.
2. Sweep: 표시되지 않은 객체들을 메모리에서 제거합니다.
3. Compact: 파편화된 메모리 공간을 하나로 모읍니다 (필요 시).
💡 실무 노트
GC가 일어날 때 애플리케이션이 일시 정지되는 'Stop-the-world' 현상을 이해해야 합니다. 대규모 트래픽 환경에서는 이 정지 시간이 서비스 장애로 이어질 수도 있어요.
팁: 불필요하게 객체를 너무 많이 생성하는 습관을 줄이는 것만으로도 GC 성능 향상에 도움이 됩니다. String 연산이 많다면 StringBuilder를 쓰는 것처럼요!
'IT 이야기' 카테고리의 다른 글
| MVC 패턴이란? 역할 분담이 중요한 이유 (1) | 2025.12.27 |
|---|---|
| JWT(JSON Web Token)의 구조와 보안 가이드 (0) | 2025.12.27 |
| 데이터베이스 트랜잭션과 ACID 원칙 (0) | 2025.12.27 |
| Docker를 왜 쓰나요? 가상머신(VM)과의 결정적 차이 (0) | 2025.12.27 |
| 프로세스 vs 스레드, 핵심 차이 완벽 정리 (0) | 2025.12.27 |