Skip to content
호스팅 · 성능

가비지 컬렉터와 멈춤

정상 TPS에서 서버가 몇 초 동안 멈추는 이유예요. 가비지 컬렉션이 어떻게 작동하는지, 로그에서 어떻게 보는지, 그리고 실제로 무엇이 도움이 되는지 알아봐요.

업데이트 2026년 8월 13일

Java는 일시 정지 중에 메모리를 해제해요. 애플리케이션이 멈추고, 가비지 컬렉터가 가비지를 제거한 뒤 작업이 계속돼요. 긴 일시 정지는 서버 전체가 멈춘 것처럼 보여요.

증상

  • 평균 TPS는 정상이지만, 몇 분에 한 번씩 모든 것이 1–5초 동안 멈춰요.
  • Paper 로그에서: Can't keep up! Did the system time change, or is the server overloaded? — 분석.
  • spark health가 GC에 소요된 시간 비율을 보여줘요.

영향을 주는 요인

요인영향
힙 크기힙이 클수록 일시 정지가 길어져요
가비지 생성 속도반복문에서 객체를 생성하는 플러그인과 모드
컬렉터기본값은 G1이고, ZGC는 큰 힙에서 짧은 일시 정지를 제공해요
코어 수병렬 수집이 더 빨라요

해야 할 일

  1. 메모리를 “넉넉하게” 주지 마세요. 8 GB면 충분한 곳에 32 GB를 주면 일시 정지가 길어져요. 기준은 최대치에 30–50%를 더하는 것이에요 — 얼마나 많은 메모리가 필요한가요.
  2. 가비지의 원인을 찾으세요. spark heapsummary가 힙을 무엇이 채우는지 보여줘요. 흔히 특정 플러그인이나 모드가 원인이에요.
  3. 플래그. Millida에는 이미 튜닝된 G1이 설정되어 있어요. 인터넷에서 가져온 수동 설정은 오히려 해를 끼치는 경우가 더 많아요 — Aikar의 플래그.

하지 말아야 할 일

“가비지 컬렉터를 비활성화”하려고 하지 마세요. 그런 옵션은 존재하지 않아요. -Xmx를 플랜의 메모리 양보다 높게 설정하지 마세요. 프로세스가 한도를 초과하려 할 때 종료돼요 — OutOfMemoryError.

Minecraft 호스팅오프라인일 때도 서버가 실행돼요서버 만들기