JVM

· JVM
1. Serial GC단일 스레드로 동작하며 모든 애플리케이션 스레드를 중단(stop-the-world) 한 스레드가 메모리를 정리주로 메모리가 작거나 단일 코어 환경에서 사용한다.2. Parallel GC여러 개의 GC 스레드를 통해 stop-the-world 를 빠르게 처리오래된 Java(8 이하)에서 기본 GC로 많이 쓰였으며, 현재도 고성능 환경에서 선호될 수 있음3. CMS(Concurrent Mark-Sweep)애플리케이션과 병렬적으로 안쓰는 메모리를 수거했다.Java 8버전에서 주로 사용했으며 이후 Java 9부터는 G1 버전 사용CMS의 단편화 이슈CMS는 힙(old)을 Mark & Sweep 알고리즘 방식으로만 회수하기 때문에 사용이 끝난 객체 영역을 연속적으로 압축하진 못한다.그 결과 ..
· JVM
도입최근 Prometheus로 운영서버의 JVM 관련 Metric을 수집하는 기능을 만들었다. 이때 GC가 메모리를 얼마나 회수해가는지에 대한 지표를 확인할 수 있었는데 "GC가 어떻게 버려진 객체들을 회수하지?" 라는 의문점이 들어 본격적인 Posting을 하게되었다. 그럼 우선적으로 JVM이 무슨 일을 하는가? JVM이 해주는 작업중 Core 한 기능들은 여러가지가있다.클래스 파일 실행JIT 컴파일러 사용GC(Garbage Collector)를 통한 메모리 관리우리는 이 중 GC에 대해서 Deep Dive 해보자 💡What is GC(Garbage Collector)?GC(Garbage Collector)는 우리가 인풋으로 준 클래스파일을 실행하는 도중에 실행되며, Heap 메모리에서 동작하고 JV..
LEE티씨
'JVM' 카테고리의 글 목록