ZGC vs G1GC — Off-Heap 메모리 해제 차이 완전 정리

“☕” 14 “min read”GC만 바꿨을 뿐인데 OutOfMemoryError: Direct buffer memory가 터집니다. 이 글에서는 Java 17 기준으로 G1GC와 ZGC가 Off-Heap 메모리를 해제하는 메커니즘이 어떻게 다른지, 그리고 GC 선택에 따라 어떤 튜닝이 필요한지 정리합니다. 이 글은 이전 글: Off-Heap 메모리와 DirectByteBuffer 누수 탐지 가이드의 후속편입니다. DirectByteBuffer의 기본 동작 원리와 누수 탐지 방법은 이전 글을 먼저 참고하세요. 1. 왜 GC에 따라 … 더 읽기

Java Off-Heap 메모리와 DirectByteBuffer 누수 탐지 실전 가이드

“☕” 11 “min read”메모리를 분명히 해제했는데 프로세스 RSS는 왜 계속 올라갈까요? Heap GC는 정상인데 서버 메모리가 부족하다는 알람이 울린다면, JVM Heap 바깥의 네이티브 메모리를 의심해봐야 합니다. 이 글에서는 Off-Heap 메모리 누수의 원리부터 jcmd, pmap, NativeMemoryTracking을 이용한 탐지, 그리고 코드 레벨 해결까지 단계별로 정리합니다. 1. 왜 Off-Heap 메모리를 알아야 할까요? Java 개발자라면 -Xmx로 Heap 크기를 설정하고 GC 로그를 확인하는 … 더 읽기