메모리·JVM 인수 가이드 — 대형 모드팩 끊김 해결의 기술적 답
대형 모드팩에서 "갑자기 1초씩 멈춰" 하는 증상은 JVM의 GC(가비지 컬렉션) 정지 시간과 관련이 깊습니다. RAM 할당량 잡는 법, Aikar's Flags(G1GC 튜닝 세트), 2026년 바닐라 기본값이 된 ZGC를 언제 쓸지, Java 버전 매칭, 성능 모드 조합을 정리했습니다.
📑 목차 (10개 섹션)
들어가며 — RAM만 늘리는 게 답이 아닌 이유
ATM10·DarkRPG 같은 대형 모드팩에서 자주 나오는 질문이 "RAM 16GB 줬는데 왜 끊겨?"입니다. 힙을 크게 잡으면 GC(가비지 컬렉션)가 한 번 돌 때 훑어야 할 양도 함께 늘어납니다. 얼마를 주느냐만큼 JVM이 그 메모리를 어떻게 관리하느냐가 중요한 이유입니다.
이 가이드는 [성능 최적화 가이드](/guides/performance-optimization/)의 기술적 후속편으로, JVM 인수(arguments) 쪽을 다룹니다.
1단계 — RAM 할당량 정하기
규모별 대략적인 기준
| 모드팩 규모 | 권장 할당 | 권장 PC RAM | |---|---|---| | 바닐라+ (모드 10~30개) | 4~6 GB | 8 GB | | 중형 (모드 50~150개) | 6~8 GB | 16 GB | | 대형 (모드 200개 이상) | 8~12 GB | 16 GB 이상 |
원칙: OS 몫을 반드시 남긴다
PC RAM 16GB라면 모드팩에 8~10GB 정도가 무난합니다. OS·브라우저·디스코드가 쓸 6GB 안팎은 남겨 두세요. 남은 메모리가 부족해지면 OS가 디스크로 스왑을 시작하고, 그때부터는 할당량과 무관하게 게임 전체가 느려집니다.
런처에서 RAM 설정하는 곳
2단계 — Aikar's Flags 적용
Aikar's Flags란
Aikar's Flags는 Paper 서버 진영의 Aikar가 정리해 공개한 G1GC 튜닝용 JVM 인수 세트입니다. GC가 한 번에 오래 멈추지 않도록 Young Generation 비율과 GC 시작 시점을 조정하는 것이 골자이며, 마인크래프트 서버 운영에서 널리 쓰입니다.
원래 서버용으로 만들어진 세트이고, 클라이언트(싱글플레이 포함)에도 그대로 넣어 쓰는 경우가 많습니다. 체감 효과는 PC와 모드팩에 따라 다르므로, 적용 전후로 끊김이 실제로 줄었는지 직접 비교해 보고 판단하세요.
인수 전문 (복사·붙여넣기)
-XX:+UseG1GC -XX:+ParallelRefProcEnabled -XX:MaxGCPauseMillis=200 -XX:+UnlockExperimentalVMOptions -XX:+DisableExplicitGC -XX:+AlwaysPreTouch -XX:G1NewSizePercent=30 -XX:G1MaxNewSizePercent=40 -XX:G1HeapRegionSize=8M -XX:G1ReservePercent=20 -XX:G1HeapWastePercent=5 -XX:G1MixedGCCountTarget=4 -XX:InitiatingHeapOccupancyPercent=15 -XX:G1MixedGCLiveThresholdPercent=90 -XX:G1RSetUpdatingPauseTimePercent=5 -XX:SurvivorRatio=32 -XX:+PerfDisableSharedMem -XX:MaxTenuringThreshold=1 -Dusing.aikars.flags=https://mcflags.emc.gs -Daikars.new.flags=true
주요 인수가 하는 일:
-XX:+UseG1GC — G1 가비지 컬렉터 사용-XX:MaxGCPauseMillis=200 — GC 정지 시간 목표를 200ms로 설정 (목표치이지 보장값은 아닙니다)-XX:+AlwaysPreTouch — 시작할 때 힙 페이지를 미리 확보. 첫 실행이 조금 느려지는 대신 이후 할당이 안정적-XX:+DisableExplicitGC — 코드가 부르는 System.gc() 무시 (전체 정지를 유발하는 호출)-XX:G1NewSizePercent / G1MaxNewSizePercent — Young Generation 크기 범위-XX:InitiatingHeapOccupancyPercent — 힙이 이 비율만큼 차면 동시 마킹 시작마지막 두 개(-Dusing.aikars.flags, -Daikars.new.flags)는 동작에 영향을 주지 않는 표식용 시스템 프로퍼티입니다.
Aikar의 안내는 -Xms와 -Xmx를 같은 값으로 둘 것을 함께 권합니다 (예: -Xms8G -Xmx8G).
인수 입력 위치
3단계 — 12GB 이상 할당 시
Aikar의 문서는 12GB 이상을 할당하는 경우 다음 값을 조정하라고 안내합니다.
-XX:G1NewSizePercent=40 (기본 30에서 40으로)-XX:G1MaxNewSizePercent=50 (기본 40에서 50으로)-XX:G1ReservePercent=15 (기본 20에서 15로)-XX:InitiatingHeapOccupancyPercent=20 (기본 15에서 20으로)큰 힙에서는 Young Generation 비율을 키워 GC 횟수를 줄이는 방향입니다.
ZGC는 언제 고려하나
2026년 들어 선택지가 하나 늘었습니다. Mojang 이 26.1 스냅샷부터 바닐라의 기본 GC 를 G1GC 에서 ZGC 로 바꿨습니다.
다만 이건 공식 런처가 바닐라를 띄울 때의 기본값 이야기이지, 모드팩에 Aikar's Flags 를 쓰지 말라는 뜻이 아닙니다. 상황별로 갈립니다.
| 상황 | 권장 | |---|---| | 모드팩(1.20.1·1.21.1 등)에 6~12GB 할당 | Aikar's Flags (G1GC) — 위 2단계 그대로 | | 26.x 바닐라를 공식 런처로 실행 | 손댈 것 없음 — 런처가 ZGC 를 기본으로 씀 | | 대형 모드팩에 16GB 이상 할당 | ZGC 를 시험해 볼 가치 있음 |
큰 힙에서 ZGC 는 정지 시간을 짧게 유지하는 데 강합니다. 반대로 6~8GB 대에서는 G1GC 가 더 효율적인 경우가 많아, 무조건 바꾸는 게 개선은 아닙니다. 바꿨으면 반드시 전후를 비교해 보세요 — 체감이 없으면 되돌리는 게 맞습니다.
⚠️ ZGC 와 Aikar's Flags 는 같이 쓸 수 없습니다. Aikar's Flags 는-XX:+UseG1GC와-XX:G1...계열 옵션 묶음입니다. ZGC 로 갈 거라면 그 인수들을 전부 지우고 아래로 대체해야 합니다. 섞어 넣으면 G1 옵션이 무시되거나 JVM 이 경고를 뱉습니다.
ZGC 인수는 Java 버전에 따라 다릅니다. 이 부분을 틀리면 게임이 아예 안 뜹니다.
-Xmx8G -Xms8G -XX:+UseZGC -XX:+ZGenerational-Xmx8G -Xms8G -XX:+UseZGCJava 23 에서 세대별 ZGC 가 기본이 되면서 -XX:+ZGenerational 은 지원 중단됐고, Java 24 에서 아예 제거됐습니다. 그래서 Java 24 이상에 이 플래그를 붙이면 인식되지 않습니다. 반대로 Java 21 에서는 붙이지 않으면 구형 비세대 ZGC 로 동작합니다.
4단계 — Java 버전 맞추기
마인크래프트 버전별 요구 Java
버전이 낮으면 게임이 아예 실행되지 않고 UnsupportedClassVersionError가 납니다. 위 G1GC 인수들은 HotSpot 계열 JVM(Adoptium·Zulu·Oracle 등) 공통 옵션이라 Java 17·21 어디서든 그대로 씁니다. 다만 마인크래프트 26.1 부터는 Java 25 가 최소 요구사항이고, 그 대역에서는 공식 런처가 ZGC 를 기본으로 쓴다는 점을 함께 기억해 두세요.
런처의 자동 처리
CurseForge·Modrinth 앱은 모드팩이 요구하는 Java 런타임을 알아서 받아 씁니다. Prism Launcher처럼 인스턴스별로 지정하는 런처에서는 직접 경로를 잡아 줘야 합니다.
5단계 — 함께 쓰면 좋은 성능 모드
JVM 인수는 GC 쪽만 건드립니다. 렌더링과 메모리 사용량 자체를 줄이는 것은 모드의 몫입니다. 모드팩에 이미 들어 있는 경우가 많으니 중복 설치 전에 mods 폴더를 먼저 확인하세요.
6단계 — 무엇을 보고 판단할 것인가
F3 디버그 화면
게임 안에서 F3을 누르면 우측에 FPS와 메모리 사용량/할당량이 표시됩니다. 사용량이 할당량에 계속 붙어 있다면 GC가 자주 도는 상태이므로 할당량을 조금 올려 볼 여지가 있습니다. 반대로 여유가 넉넉한데도 끊긴다면 원인은 메모리가 아니라 렌더링이나 틱 부하 쪽입니다.
[Memory Usage Title](/mods/memory-usage-title/)
마인크래프트 창 제목 표시줄에 메모리 사용량을 띄우는 작은 모드입니다. F3을 계속 켜 둘 필요 없이 사용량 추이만 보고 싶을 때 유용합니다. 메모리를 정리해 주지는 않고, 표시만 합니다.
흔한 증상과 점검 순서
"메모리는 남는데 주기적으로 1초씩 멈춘다"
GC 정지가 유력합니다. Aikar's Flags를 적용하고-Xms를 -Xmx와 같게 맞춰 보세요."부팅 중 OutOfMemoryError"
할당량 부족, 또는 32비트 Java 사용(최대 힙이 작게 제한됨). 64비트 Java인지 확인하고 할당량을 올리세요."FPS 자체가 낮다"
JVM 인수로는 해결되지 않는 영역입니다. 렌더 거리와 그래픽 옵션, 렌더링 최적화 모드 쪽을 보세요 — [성능 최적화 가이드](/guides/performance-optimization/)에 정리돼 있습니다."새 청크로 이동할 때 멈춘다"
청크 생성과 디스크 I/O 부하입니다. 인스턴스를 SSD에 두고, 렌더·시뮬레이션 거리를 줄이는 쪽이 먼저입니다.마무리
순서는 단순합니다. 할당량을 상식적인 선(OS 몫을 남기는 선)으로 잡고 → Aikar's Flags를 넣고 → Java 버전을 맞추고 → 성능 모드를 확인합니다. 그래도 끊긴다면 그건 GC 문제가 아닐 가능성이 높으니, 렌더링·틱 부하 쪽으로 넘어가 진단해야 합니다.
함께 읽으면 좋은 글
📦 관련 모드팩
All the Mods 10
ATM 시리즈 최신작. 400개 이상의 모드를 자유롭게 즐기는 대형 키친싱크 모드팩. 1.21 NeoForge 기반으로 가장 최신 콘텐츠를 만나보세요.
🎯 어울리는 분 한 모드팩 안에서 자동화·마법·탐험을 두루 즐기고 싶은 사람에게 잘 맞습니다.
DarkRPG
흡혈귀·드래곤·마법·퀘스트가 결합된 본격 RPG 모드팩. Epic Fight 패링 전투와 풍부한 보스 사냥으로 새로운 진행 흐름이 만들어집니다.
🎯 어울리는 분 보스 사냥 퀘스트와 패링 기반 액션 RPG를 좋아하는 가족 단위 플레이어에게 잘 맞습니다.
COBBLEVERSE - Pokemon Adventure
Cobblemon 기반의 본격 포켓몬 어드벤처 모드팩. 체육관 도전, 진화, 트레이너 배틀까지 마인크래프트 안에서 포켓몬 RPG를 경험하세요.
🎯 어울리는 분 자동화보다는 포켓몬 RPG (체육관 도전·트레이너 배틀) 경험을 원하는 분에게 잘 맞습니다.