GC (5) 썸네일형 리스트형 [ML-01] JVM 옵션 수정 Optimization 카테고리에서는 성능 최적화가 필요하여 성능을 개선한 작업들을 기록한다. 같은 현상이 여러 번 발생할 수 있기 때문에 하나의 작업에는 같은 태그를 붙이기로 하였다. 아래와 같이 [ML-01] 태그가 붙어있는 글은 [ML-01]이라는 하나의 문제를 해결하기 위해 작성한 글이라고 생각하면 된다. [ML-01] Memory Leak 분석, [ML-01] Pinpoint 설치, [ML-01] ... ML-01 ML-01을 해결하기 위해 GC Log와 HeapDump 파일을 생성하도록 톰캣 설정을 수정해본다. 생성된 GC Log와 HeapDump 파일이 정상적으로 생성되었는지 확인하는 과정까지 포함한다. 이번 장에서는 GC Log와 HeaDump 분석을 위하여 톰캣 설정을 남기도록 설정을 수.. [JVM] GC 벤치마크 결과 벤치마크 결과 이번 장에서는 GC 벤치마크 결과를 살펴본다. 이번 장에서는 분석에 필요한 데이터를 나열해두고 분석해본다. [[JVM] GC 벤치마크 결과 (링크)]에서는 이번 장에서 다루지 않은 데이터도 따로 정리해두었다. 이번 장의 각 결과 하단에는 공식문서 및 많은 블로그를 참고하여 필자의 생각을 정리해보았다. GC 선정 결과 필자가 선정한 GC는 환경을 불문하고 Parallel GC이다. Serial GC, ZGC, CMS는 성능이 좋다하여도 사용하기 힘든 부분이 있다. (Serial GC는 고성능 서버자원을 모두 사용하지 않으며 ZGC는 필자가 개발한 서비스의 Java 버전과 맞지 않으며 CMS 는 Java 9에서 deprecated 되었기 때문이다. 실제로 결과들을 살펴보면 CMS가 가장 좋은 .. [JVM] GC 벤치마크 분석 포인트 [JVM] GC 벤치마크 개요 (링크)에서 분석에 필요한 Dump 파일과 Log 파일을 추출하고 툴을 사용하여 보기좋게 결과를 만드는 방법까지 진행하였다. 이번 장에서는 추출한 결과 파일을 분석하는 방법에 대해서 알아본다. Heap Dump 분석 Swallow Heap: 한 객체만이 점유한 Heap의 크기 Retained Heap: 한 객체가 제거될 때 함께 제거될 수 있는 객체들이 점유한 Heap의 크기. 자신이 GC 될 때 함께 GC 될 수 있는 참조하고 있는 객체의 메모리의 크기. Unreachable Object: Heap 영역에 값이 할당되어 있지만 이를 참조하는 변수가 Stack 영역에 없는 Object Dominator Tree: 객체간 참조관계를 나타내는 Tree, Keep Alive Tr.. [JVM] GC 알고리즘 종류 이번 장에서는 GC 알고리즘의 종류와 작동 방식, 선정 기준에 대해서 알아본다. GC 알고리즘은 크게 Non Concurrent Collectors와 Concurrent Collectors다. Non Concurrent Collectors에는 아래의 Collector들이 있다. Serial Collector Parallel Collector Parallel Old Collector Concurrent Collectors에는 아래의 Collector들이 있다. Concurrent Mark Sweep Collector (CMS) Garbage-First Collector (G1GC) Z Collector (ZGC) 이번 진행하는 프로젝트에 맞는 Collector를 선정하기 위해 벤치마크를 진행하고 많은 문서.. [JVM] Heap & GC 이번 장에서는 Oracle 공식문서와 여러 블로그들의 글을 정리하면서 Java Heap에 대해서 알아보도록 한다. 먼저 많은 블로그들에 있는 Heap 구조를 살펴보면 아래와 같다. 그림1: Java8 이전의 메모리 구조(출처: https://asfirstalways.tistory.com/158) 그림에서 Permanent영역은 java8부터는 제거되었으며 Class나 Method의 메타 정보들이 Native Memory의 Metaspace영역으로 이동하였다. Native Memory는 Heap 영역의 바깥인 Off-Heap 공간을 의미하며 시스템의 기본 메모리라고 생각하면 된다. Java 어플리케이션은 크게 Heap영영과 Off-Heap 두 공간을 활용하여 동작한다. Off-Heap영역도 Java 어플리.. 이전 1 다음