Tối ưu hiệu năng Câu hỏi thường gặp 6 phút đọc

JVM Flag Là Gì? Hướng Dẫn Tối Ưu Máy Chủ Minecraft Hiệu Quả

JVM Flag Là Gì?

JVM (Java Virtual Machine) là môi trường thực thi Java, chịu trách nhiệm chạy toàn bộ máy chủ Minecraft. Vì Minecraft được phát triển bằng Java, JVM sẽ thực thi mã nguồn của trò chơi, đồng thời quản lý các tài nguyên như RAM, CPU và luồng xử lý (Threads).

JVM Flag là các tham số khởi động của Java, cho phép bạn điều chỉnh cách JVM vận hành máy chủ Minecraft. Có thể hiểu đơn giản, đây là những thiết lập giúp Java sử dụng tài nguyên hiệu quả hơn, giảm giật lag và tối ưu hiệu năng của máy chủ.


JVM Flag Giúp Giải Quyết Vấn Đề Gì?

JVM Flag được tạo ra để giúp Java vận hành máy chủ Minecraft hiệu quả hơn. Mặc dù các thiết lập mặc định của Java có thể đáp ứng hầu hết nhu cầu, nhưng đối với Minecraft, chúng chưa phải lúc nào cũng tối ưu.

Tối ưu Garbage Collection (GC)

Máy chủ Minecraft liên tục tạo và giải phóng hàng triệu đối tượng trong bộ nhớ. Nếu quá trình Garbage Collection (GC) diễn ra không hiệu quả, máy chủ có thể bị khựng hoặc giảm TPS.

JVM Flag giúp tinh chỉnh cơ chế Garbage Collection để việc thu hồi bộ nhớ diễn ra nhanh và ổn định hơn.


Giảm Lag Spike

Minecraft là trò chơi yêu cầu độ trễ thấp.

Với cấu hình mặc định, Java không ưu tiên các tác vụ có độ trễ thấp. Nếu Garbage Collection kéo dài quá lâu, máy chủ có thể bị tạm dừng trong thời gian ngắn, gây ra hiện tượng Lag Spike và ảnh hưởng đến trải nghiệm của người chơi.

JVM Flag giúp giảm thời gian tạm dừng này.


Quản lý tài nguyên hiệu quả hơn

Khi được cấu hình đúng, JVM Flag giúp:

  • Quản lý RAM hiệu quả hơn.
  • Giảm số lần Garbage Collection không cần thiết.
  • Hạn chế lãng phí CPU.
  • Giúp máy chủ vận hành ổn định hơn khi có nhiều người chơi.

Cấu Trúc Của JVM Flag

JVM Flag là các tham số được đặt trong lệnh khởi động Java, nằm giữa lệnh java và file .jar của máy chủ.

Ví dụ:

 
java [JVM Flags] -jar paper.jar --nogui
 

Một số tham số thường gặp:

  • -Xms: Thiết lập lượng RAM khởi tạo cho JVM.
  • -Xmx: Thiết lập lượng RAM tối đa JVM được phép sử dụng.
  • -XX:+: Bật một tính năng của JVM.
  • -XX:-: Tắt một tính năng của JVM.
  • -XX:TênThamSố=GiáTrị: Thiết lập giá trị cho một tham số.
  • M hoặc G: Đơn vị Megabyte hoặc Gigabyte.
  • Nhiều JVM Flag được nối với nhau bằng dấu cách để tạo thành một cấu hình hoàn chỉnh.

Nếu máy chủ có nhu cầu đặc biệt, bạn có thể bổ sung thêm các tham số để tối ưu Garbage Collection, ghi log hiệu năng hoặc hỗ trợ chẩn đoán lỗi.


Ví Dụ Về Bộ JVM Flag

Dưới đây là ví dụ về Aikar's Flags – bộ tham số JVM được cộng đồng Minecraft sử dụng rộng rãi để tối ưu hiệu năng máy chủ.

 
java -Xms10G -Xmx10G -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 -jar paper.jar --nogui
 

Giải thích

  • -Xms10G -Xmx10G: Cấp phát trước và giới hạn tối đa 10 GB RAM.
  • -XX:+UseG1GC: Sử dụng Garbage Collector G1.
  • -XX:MaxGCPauseMillis=200: Đặt mục tiêu thời gian tạm dừng GC khoảng 200 ms.
  • Các tham số G1* còn lại giúp tinh chỉnh quá trình Garbage Collection.
  • -jar paper.jar: Khởi chạy máy chủ Paper.
  • --nogui: Tắt giao diện đồ họa để tiết kiệm tài nguyên.

Lưu ý: Trên Java 17, Java 21 và các phiên bản mới hơn, G1GC đã là Garbage Collector mặc định. Vì vậy, việc thêm -XX:+UseG1GC thường không tạo khác biệt lớn. Hiệu quả chủ yếu đến từ việc phân bổ RAM hợp lý và các tham số tinh chỉnh Garbage Collection khác.


Có Nên Sử Dụng JVM Flag Không?

Điều bắt buộc là bạn nên thiết lập:

  • -Xms
  • -Xmx

để giới hạn lượng RAM mà máy chủ sử dụng.

Ngoài hai tham số này, các JVM Flag khác chỉ nên bổ sung khi thực sự cần thiết.

Nếu bạn đang sử dụng Java 17, Java 21 hoặc mới hơn, hãy thử chạy máy chủ với cấu hình mặc định trước. Chỉ nên áp dụng Aikar's Flags nếu log hoặc hiệu năng cho thấy máy chủ đang gặp vấn đề liên quan đến Garbage Collection.

Theo tài liệu chính thức của PaperMC:

Nếu máy chủ gặp vấn đề về Garbage Collection hoặc đang sử dụng phiên bản Minecraft hoặc Java cũ, bạn có thể thử sử dụng Aikar's Flags, vì bộ tham số này được tối ưu dành riêng cho Minecraft.


Vì Sao Nhiều Người Chưa Biết Đến JVM Flag?

JVM Flag vẫn còn khá xa lạ với nhiều quản trị viên máy chủ vì:

  • Cần có kiến thức về Java, Garbage Collection và JVM.
  • Tài liệu chính thức của Java chủ yếu hướng đến lập trình viên, không phải người quản trị máy chủ Minecraft.
  • Các thông số JVM không hiển thị trực tiếp trên Panel như RAM hoặc TPS.
  • Máy chủ vẫn có thể hoạt động với cấu hình mặc định, khiến nhiều người không nhận ra rằng vẫn còn khả năng tối ưu thêm.

Cách Bật hoặc Tắt JVM Flag

Bước 1

Mở thư mục chứa máy chủ Minecraft và tìm file dùng để khởi động máy chủ.


Bước 2

Mở file bằng trình soạn thảo văn bản.


Bước 3

Tìm dòng lệnh bắt đầu bằng:

 
java -jar
 

hoặc lệnh Java tương tự.

Sau đó thay thế bằng lệnh Java có chứa các JVM Flag.


Bước 4

Điều chỉnh dung lượng RAM phù hợp.

Ví dụ:

  • Máy chủ 4 GB RAM: -Xms3G -Xmx3G
  • Máy chủ 8 GB RAM: -Xms6G -Xmx6G
  • Máy chủ 16 GB RAM: -Xms14G -Xmx14G

Nên chừa khoảng 1–2 GB RAM cho hệ điều hành và các tiến trình khác.


Bước 5

Lưu file và khởi động lại máy chủ để áp dụng cấu hình mới.

Mẹo: Bạn cũng có thể sử dụng Start Script Generator của PaperMC để tạo nhanh bộ lệnh JVM Flag phù hợp với phiên bản Java và máy chủ đang sử dụng.


Thiết Lập JVM Flag Trên PIKAMC

Nếu đang sử dụng dịch vụ tại PIKAMC, bạn có thể thiết lập JVM Flag trực tiếp từ Panel quản lý.

  1. Truy cập Game Panel và dừng máy chủ.
  2. Vào Cài đặt → Khởi động (Startup) → Command.
    20260702_xzapKyY6LgNpRePegDo6.png
  3. Tại đây bạn có thể chỉnh sửa toàn bộ các tham số JVM Flag.
  4. Nếu Panel hỗ trợ nút Khuyến nghị (Recommended như PIKAMC), chỉ cần nhấn để tự động áp dụng bộ tham số khởi động được đề xuất cho máy chủ.
    20260702_7mgnWe2mpeJX0YbApvlt.png