공통 최적화 인자
Large Page 지원
섹션 제목: “Large Page 지원”Windows에서 large page를 쓰려면 반드시 관리자 권한으로 실행해야 한다.
손대기 전에 먼저 시스템이 이 기능을 이미 지원하는지 확인해 보자. 콘솔에서 다음 명령어를 실행한다.
java -Xlog:gc+init -XX:+UseLargePages -Xmx1g -version다음 문구가 나온다면 완전히 호환되지 않는다는 뜻이다.
UseLargePages disabled, no large pages configured and available on the system.즉 현재 시스템이 large page를 지원하지 않는다. 하지만 서두르지 말고 다음 명령어를 시도해 보자.
java -Xlog:gc+init -XX:+UseTransparentHugePages -Xmx1g -versionLarge Page Support: Enabled (Transparent)가 보인다면 시스템이 transparent huge page를 지원하는 것이다.
여전히 지원하지 않거나 극한의 성능을 원한다면 커널 최적화를 참고하자.
LargePages를 지원한다면 다음 인자를 추가한다.
-XX:+UseLargePages -XX:LargePageSizeInBytes=2mTransparentHugePages를 지원한다면 다음 인자를 추가한다.
-XX:+UseTransparentHugePages중국어 인코딩
섹션 제목: “중국어 인코딩”글자 깨짐을 막는다.
-Dfile.encoding=UTF-8그래도 글자가 깨진다면 다음을 실행해 보자.
chcp 65001 # for Windows쓸모없는 메시지 제거
섹션 제목: “쓸모없는 메시지 제거”(Leaf 또는 Gale 전용)
-Dgale.log.warning.root=false -Dgale.log.warning.offline.mode=false더 빠른 보안 난수 생성기
섹션 제목: “더 빠른 보안 난수 생성기”(Linux와 macOS 전용, Windows에서는 효과 없음) (바닐라 Minecraft는 프로필 공개 키 서명에서만 SecureRandom을 쓴다)
-Djava.security.egd=file:/dev/urandomJVM 디버그 로그 비동기 출력
섹션 제목: “JVM 디버그 로그 비동기 출력”(Java 17 이상 전용)
-Xlog:asyncJava 통합 로깅(Unified Logging)이 출력하는 JVM 디버그 정보를 비동기로 출력한다.
-Xlog:gc 같은 flag로 JVM 디버그 정보 출력을 켰을 때만 효과가 있다.
더 긴 KeepAlive 시간
섹션 제목: “더 긴 KeepAlive 시간”(Paper와 Paper 포크 전용)
-Dpaper.playerconnection.keepalive=60네트워크가 좋지 않다면 keepalive 시간을 적당히 늘리고, alternate-keepalive를 켜자.
폴더 탐색과 심볼릭 링크 검증 끄기
섹션 제목: “폴더 탐색과 심볼릭 링크 검증 끄기”(Paper와 Paper 포크 전용)
-Dpaper.disableWorldSymlinkValidation=true월드를 로드할 때 폴더 탐색과 심볼릭 링크 검증을 끈다. 큰 월드의 로딩 속도가 눈에 띄게 빨라진다.