Heap이 아닌 메모리 영역
Metasapce: 클래스 메타 데이터 저장
Code Cache: JIT 컴파일된 네이티브 코드
Compressed Class Space: 압축된 클래스 포인터
Thread Stacks: 각 스레드의 스택 메모리
별도 설정 필요: -XX:MaxMetaspaceSize
클래스 로딩이 많으면 증가 (Spring의 프록시, 동적 클래스 생성 등)
Non-Heap과 트래픽 관계
사용자 접속 증가와 거의 무관
- 클래스/메타데이터는 앱 시작 시 대부분 로드
- 이후 동일 클래스 재사용 (캐시 효과)
- 트래픽 증가 → Heap 사용량 증가 (객체 생성)
- Non-Heap은 거의 일정하게 유지
예외 케이스 (Non-Heap이 증가하는 경우):
- 동적 프록시 과다 생성 (Reflection, CGLIB)
- Groovy/스크립트 언어 런타임 컴파일
- 클래스 로더 누수 (hot deploy 반복 시)
Non-Heap과 GC
기본적으로 GC 대상이 아닙니다. 하지만 완전히 아닌 건 아닙니다.
Metaspace, Code Cache은 조건부로 정리 가능
'Programming-[Backend] > Java' 카테고리의 다른 글
| Gradle Daemon (0) | 2026.03.17 |
|---|---|
| [작성중] Enum 사용: @Converter 적용하기 (0) | 2025.06.23 |
| [TIL] mockStatic (0) | 2025.03.19 |
| .jar java SPI 모듈 개발: Factory Pattern(w/o Spring), ServiceLoader, @AutoService (0) | 2025.02.27 |
| [TIL] JVM HeapSize, HeapDumpPath 설정 (0) | 2025.01.06 |