반응형 language/java130 ZGC (Z Garbage Collector) - 초저지연 GC의 원리 ZGC (Z Garbage Collector) - 초저지연 GC의 원리Java GC를 이야기하면 항상 등장하는 문장이 있다."ZGC는 Pause Time이 1ms 이하래."이 말은 대부분 사실이다.하지만 많은 개발자가"그럼 G1보다 무조건 좋은 GC 아닌가요?"라고 생각한다.그건 아니다.GC는"얼마나 빠른가?"보다"어떤 환경에서 가장 적합한가?"가 훨씬 중요하다.이번 글에서는ZGC가 등장한 이유G1과 근본적인 차이Colored PointerLoad BarrierConcurrent RelocationPause Time이 짧은 이유실무에서 언제 사용하는가까지 알아본다.왜 ZGC가 등장했을까?G1도 상당히 좋은 GC다.하지만 Heap이 계속 커지면 문제가 생긴다.예를 들어Heap256GB 또는Heap1TB 이.. 2026. 6. 29. G1 GC (Garbage First GC) G1 GC (Garbage First GC)Java를 사용하다 보면 JVM 옵션에서 가장 많이 보게 되는 GC가 있다. -XX:+UseG1GC 또는 JDK 9 이상에서는별도의 설정 없이도 기본 GC로 동작한다.그만큼 현재 실무에서 가장 많이 사용되는 GC다.하지만 많은 개발자가"G1이 최신 GC니까 무조건 가장 빠르다."라고 생각한다.이건 틀린 말이다.G1 GC의 목표는처리량(Throughput)이 아니라 예측 가능한 Pause Time을 만드는 것이다.이번 글에서는기존 GC가 가진 문제G1이 등장한 이유Region 구조Young GCMixed GCConcurrent MarkingPause Time실무에서 G1을 언제 사용하는지까지 알아본다.왜 G1 GC가 등장했을까?예전에는Serial GCParalle.. 2026. 6. 29. GC 튜닝 기초 (왜 대부분의 성능 문제는 GC보다 객체 생성 패턴에서 시작되는가) GC 튜닝 기초 (왜 대부분의 성능 문제는 GC보다 객체 생성 패턴에서 시작되는가)Java 개발을 하다 보면 이런 말을 자주 듣는다.GC 때문에 서버가 느려졌어요.GC 튜닝하면 빨라질까요?-Xmx를 늘리면 해결되나요? 하지만 실무에서는 GC 자체가 문제인 경우보다애플리케이션이 GC를 힘들게 만드는 경우가 훨씬 많다.GC는 메모리를 회수하는 도구일 뿐이다.메모리를 과도하게 사용하는 코드, 불필요한 객체를 계속 생성하는 코드, 캐시를 잘못 사용하는 코드가 있다면 아무리 좋은 GC를 사용해도 근본적인 해결이 되지 않는다.이번 글에서는JVM 메모리 구조와 GC의 관계Minor GC / Major GCStop-The-WorldGC 튜닝의 기본 원칙실무에서 GC를 바라보는 방법까지 알아본다.왜 GC가 필요한가?C/.. 2026. 6. 29. Escape Analysis 재방문 (Scalar Replacement, Lock Elision) Escape Analysis 재방문 (Scalar Replacement, Lock Elision)객체 생성 비용을 줄이는 방법을 이야기하다 보면 반드시 등장하는 기술이 있다.바로 Escape Analysis(EA) 다.처음 들으면 어려워 보이지만 핵심 아이디어는 매우 단순하다."이 객체가 현재 메서드 밖으로 나가는가?"JVM은 이 질문 하나를 통해객체 생성을 제거하기도 하고Heap 대신 Stack처럼 사용하기도 하고synchronized까지 제거하기도 한다.이번 글에서는Escape Analysis가 무엇인지JVM이 어떤 기준으로 Escape를 판단하는지Scalar ReplacementLock Elision실무에서 알아야 할 한계까지 알아본다.Escape란 무엇인가?Escape의 뜻은탈출하다 이다.JVM .. 2026. 6. 29. 객체 생성 비용 줄이기 (Object Creation Cost) 객체 생성 비용 줄이기 (Object Creation Cost)면접에서 자주 나오는 질문이 있다.객체를 많이 생성하면 성능이 나빠지나요? 많은 사람들이new 많이 하면 메모리 많이 쓰니까 느리다 정도로 답한다.반은 맞고 반은 틀리다.실제로 현대 JVM은 객체 생성에 엄청난 최적화가 들어가 있다.오히려 많은 경우객체 생성 자체보다GC동기화DB네트워크문자열 처리 가 더 큰 병목이 된다.이번 글에서는객체 생성 비용이 실제로 발생하는 곳JVM이 객체 생성을 얼마나 빠르게 처리하는지어떤 경우 객체 생성이 문제가 되는지실무에서 적용 가능한 최적화 방법을 알아본다.객체 생성은 생각보다 빠르다예시 User user = new User(); 대부분은Heap 탐색↓빈 공간 찾기↓메모리 할당↓객체 생성 이라고 생각한다.하지.. 2026. 6. 29. Spring MVC 예외 처리 내부 구조 Spring MVC 예외 처리 내부 구조Spring을 사용하다 보면 자연스럽게 이런 코드를 작성하게 된다. @RestControllerpublic class UserController { @GetMapping("/users/{id}") public User getUser(@PathVariable Long id) { throw new RuntimeException("에러 발생"); }} 실행하면 { "timestamp": "...", "status": 500, "error": "Internal Server Error"} 응답이 나온다.그런데 의문이 생긴다.예외를 잡지도 않았는데Spring은 어떻게 에러 응답을 만드는 걸까?이번 글에서는DispatcherServlet 내부 .. 2026. 6. 24. 이전 1 2 3 4 ··· 22 다음 반응형