← 질문 목록
#32깊이 0

가비지 컬렉션이 멈춤을 만드는 이유는?

언어 · 런타임기초메모리

살아 있는 객체를 세는 동안 그 관계가 바뀌면 안 되기 때문이다. 세는 중에 애플리케이션이 참조를 바꾸면 이미 확인한 것이 틀려져서, 그 구간만은 실행을 세운다.

  • Eden새 객체가 여기 태어난다. 대부분 금방 죽는다
  • Survivor한두 번 살아남은 것이 잠시 머문다
  • Old오래 산 것이 승격된다. 여기 청소가 비싸다

대부분의 객체는 태어나자마자 죽는다. 그래서 젊은 영역만 자주 짧게 치우고 늙은 영역은 가끔 손댄다. 젊은 쪽 청소는 보통 밀리초 단위라 눈에 안 띈다.

문제는 늙은 영역이다. 대상이 많고 흩어져 있어 오래 걸리고, 그동안 응답이 멈춘다. 을 키우면 빈도는 줄지만 한 번의 멈춤은 길어진다 — 총량과 최악값의 맞바꿈이다.

요즘 수집기는 세는 일 대부분을 실행과 겹쳐서 한다. 멈추는 구간을 시작과 끝의 짧은 두 번으로 줄이는 방식이다. 완전히 없애지는 못한다.

추천 꼬리질문

0/300

적은 내용은 AI 학습에 쓰일 수 있습니다. 이름이나 연락처는 넣지 말아 주세요.

관련 질문

가비지 컬렉션이 멈춤을 만드는 이유는?