GC 동작 방식 및 원리 (2)
·
카테고리 없음
GC — Stop-the-World, Card Table, 그리고 알고리즘의 진화지난 글에서는 JVM의 어떤 객체가 GC 대상이 되는지(3가지 가설, GC Root)를 다뤘다. 이번 글에서는 그 GC가 실제로 어떤 과정으로 동작하는지, 속도가 느려지는 원인인 STW는 무엇인지, 그리고 GC가 어떻게 발전해왔는지를 다룬다. 핵심 질문은 하나다.GC의 역사는 곧 Stop-the-World를 줄여온 역사다. 어떻게 줄여왔는가?1 Stop-the-World — GC 속도 저하의 원인GC가 살아있는 객체를 판별하려면 GC Root에서 참조 그래프를 탐색(Mark)해야 한다. 문제는 탐색하는 동안 애플리케이션 스레드가 참조를 바꿔버리면 판정이 틀어진다는 것이다. // GC가 A를 Mark하는 중에...A.ref =..