Full GC: 2개의 글
CMS와 마찬가지로 G1의 목표는 Full GC가 발생하지 않는 것 Full GC 가 발생하는 네 가지 경우는 다음과 같다 1) Concurrent GC Fail , 동시 병렬모드 실패 - Concurrent GC는 표시 단계를 거쳐서 혼합 컬렉션때 가비지가 소거된다. 그런데 혼합 컬렉션이 진행되기 전, 표시 단계에서 올드 제너레이션이 가득찰 경우 G1은 표시 단계를 중단한다. - 이 때, 힙 크기를 늘리거나, 표시 단계를 빨리 시작하거나, 표시 단계의 스레드 수를 늘려서 표시 단계가 더 빨리 수행되도록 튜닝해야 한다. 2) 승격 실패 ( 영 -> 올드 ) - 혼합 컬렉션이 시작되었지만, 혼합컬렉션에 의해 소거되는 올드 제너레이션의 영역보다, Minor GC로 승격되어서 올드 제너레이션 영역으로 이동하는..
● GC (Garbage Collection) Java Application에서 사용하지 않는 메모리를 자동으로 수거하는 기능 C언어의 경우 malloc, free등을 이용해서 메모리를 할당하고, 일일이 그 메모리를 수거해줘야했다. 그러나 Java 언어에서는 GC가 알아서 해준다. ● Stop-the-world GC를 실행하기 위해 JVM이 어플리케이션의 실행을 멈춘다. 이를 Stop-the-world라고 한다. GC 튜닝이란, 이 Stop-the-world의 시간을 줄이는 것이다. ● Generational GCs 대부분의 객체는 오랜시간동안 살아있지 않는다. 오래된 객체에서 젊은 객체로의 참조는 아주 적게 존재한다. 이러한 두 가지에 조건하에 가비지 컬렉터를 효율적으로 동작시키기 위해 HotSpot ..