본문 바로가기
용어 및 개념

GC와 CPU, 메모리 사용량의 관계 정리

by Rainbound-IT 2026. 1. 8.
반응형

 

목차

     

     

    애플리케이션 성능 이슈를 분석하다 보면

    CPU는 높은데 로직은 단순하고,

    메모리는 넉넉한데 GC는 계속 도는 상황을 자주 마주하게 된다.

    이 글에서는 GC(Garbage Collection)

    CPU와 메모리 사용량과 어떻게 연결되어 동작하는지

    개념적으로 정확히 정리한다.


    1. GC는 무엇을 기준으로 동작하는가

    먼저 가장 중요한 전제를 짚고 가야 한다.

    GC는 CPU 사용률이나 메모리 사용률을 보고 동작하지 않는다.

    GC의 판단 기준은 다음과 같다.

    • 힙(heap) 내 객체 상태
    • 객체 할당 속도 (allocation rate)
    • 살아 있는 객체(live object)의 양
    • 힙 영역의 포화 여부

    즉,

    “메모리를 얼마나 쓰고 있느냐”보다 “얼마나 빠르게 할당되고, 얼마나 오래 살아남느냐”가 핵심이다.


    2. GC와 메모리 사용량의 관계

    2.1 메모리 사용량이 증가하면 GC는 왜 잦아지는가

    힙에 객체가 많이 쌓일수록 다음 현상이 발생한다.

    • 살아 있는 객체(live object)가 증가
    • GC가 회수할 수 있는 공간 감소
    • 한 번의 GC로 확보되는 메모리 양 감소
    • GC 주기 단축

    결과적으로:

    • Minor GC 증가
    • Major / Full GC 발생 확률 증가

    중요한 점은 다음이다.

    GC는 메모리를 “정리”할 수 있을 때만 효과가 있다.

    정리할 수 없는 객체가 많아질수록 GC는 비효율적으로 반복된다.


    2.2 GC는 자주 도는데 메모리는 줄지 않는 이유

    이 상황은 대부분 다음 중 하나다.

    • 캐시, static 객체, 전역 참조
    • 요청 수명보다 긴 객체 설계
    • 불필요한 객체 풀(pool) 유지

    이 경우:

    • GC는 계속 실행되지만
    • 실제 회수되는 메모리는 적고
    • GC 비용만 누적된다

    3. GC와 CPU 사용량의 관계

    3.1 GC는 왜 CPU를 많이 사용하는가

    GC는 내부적으로 다음 작업을 수행한다.

    • 객체 참조 그래프 탐색
    • 마킹(mark)
    • 정리(sweep)
    • 이동(compaction)

    이 모든 작업은:

    • I/O 없음
    • 대기 없음
    • 순수 CPU 연산

    즉,

    GC 시간 = CPU 연산 시간


    3.2 GC가 많아질수록 CPU에서 발생하는 일

    GC 빈도가 증가하면 CPU에서는 다음 현상이 누적된다.

    1. GC 스레드 실행 시간 증가
    2. 애플리케이션 스레드와 CPU 경쟁
    3. 컨텍스트 스위칭 증가
    4. 캐시 미스 증가
    5. 실제 비즈니스 로직 실행 시간 감소

    결과:

    • CPU 사용률 상승
    • 처리량(TPS) 감소
    • 응답 지연 증가

    3.3 CPU가 높아도 원인이 GC로 보이지 않는 이유

    운영 환경에서 자주 헷갈리는 포인트다.

    • GC 스레드는 일반 CPU 사용량에 포함됨
    • 별도로 분리되어 보이지 않음
    • 따라서:
    CPU80%
     ├─ 실제 로직30%
     ├─ GC40%
     └─ 스케줄링/컨텍스트 스위칭10%
    
    

    겉보기에는 “CPU는 높은데 로직은 가벼운” 상태가 된다.


    4. GC · CPU · 메모리의 악순환 구조

    세 요소는 독립적이지 않고 순환 구조를 만든다.

    객체 할당 증가
      ↓
    힙 사용량 증가
      ↓
    GC 빈도 증가
      ↓
    CPU 사용 증가
      ↓
    처리 지연 발생
      ↓
    객체 수명 증가
      ↓
    Live Object 증가
      ↓
    GC 효율 감소
      ↓
    (반복)
    
    

    이 구조의 핵심은 다음이다.

    GC 문제는 메모리 문제처럼 시작하지만 대부분 CPU 병목으로 끝난다.


    5. 자주 발생하는 오해 정리

    ❌ “메모리 여유 있으면 GC 문제 없다”

    • 힙이 커도 할당 속도가 빠르면 GC는 잦다

    ❌ “CPU 높으면 로직이 무겁다”

    • GC 비중이 원인인 경우가 매우 많다

    ❌ “Concurrent GC면 CPU 부담 없다”

    • STW는 줄어들 수 있지만
    • CPU 사용 자체는 계속 발생한다

    6. 핵심 정리

    • 메모리
      • GC의 대상
      • 살아 있는 객체가 많을수록 GC 효율 저하
    • GC
      • 메모리를 정리하기 위한 메커니즘
      • 실질적인 비용은 CPU
    • CPU
      • GC 비용을 실제로 지불하는 자원

    GC는 메모리 문제를 해결하려다 CPU를 소비하는 시스템 메커니즘이다.

    반응형

    '용어 및 개념' 카테고리의 다른 글

    애자일( Agile) 방법론  (0) 2025.02.05
    운영체제(os)와 커널(kernel)의 차이  (0) 2024.01.15
    DNS 캐시, 삭제 방법  (0) 2023.10.31
    SPOF(단일장애지점)이란  (0) 2023.10.19
    메타버스란? (metaverse)  (0) 2023.01.05

    댓글