Flags de Aikar: arranque optimizado para Minecraft

Las flags de Aikar son un conjunto de parámetros de Java pensados para servidores Minecraft. Reducen las pausas del recolector de basura (GC), la causa más habitual de micro-lag. Son el estándar en servidores Paper.

Cambia siempre -Xms y -Xmx según la RAM de tu plan, y ponlos iguales. Deja margen: en un plan de 8 GB usa -Xms6G -Xmx6G, no 8G, porque el sistema también necesita memoria.

Las flags (menos de 12 GB de RAM)

-Xms4G -Xmx4G -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

Las flags (12 GB o más)

Con heaps grandes Aikar cambia cinco valores: G1NewSizePercent=40, G1MaxNewSizePercent=50, G1HeapRegionSize=16M, G1ReservePercent=15 e InitiatingHeapOccupancyPercent=20.

-Xms10G -Xmx10G -XX:+UseG1GC -XX:+ParallelRefProcEnabled -XX:MaxGCPauseMillis=200 -XX:+UnlockExperimentalVMOptions -XX:+DisableExplicitGC -XX:+AlwaysPreTouch -XX:G1NewSizePercent=40 -XX:G1MaxNewSizePercent=50 -XX:G1HeapRegionSize=16M -XX:G1ReservePercent=15 -XX:G1HeapWastePercent=5 -XX:G1MixedGCCountTarget=4 -XX:InitiatingHeapOccupancyPercent=20 -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

Cómo ponerlas en SkyPanel

En el panel de MixelNodes no tienes que pegar las flags a mano: vienen preparadas.

  1. En tu servidor, abre Inicio.
  2. En Flags adicionales elige Aikar's Flags.
  3. Revisa Porcentaje máximo de RAM (90 por defecto): es la parte de la RAM de tu plan que se da a Minecraft. En modpacks pesados conviene bajarlo un poco.
  4. Guarda y reinicia el servidor. El Comando de inicio de la parte de arriba muestra cómo queda.
Pantalla Inicio de SkyPanel con el comando de inicio, la imagen Docker y las variables, entre ellas Flags adicionales con Aikar's Flags y Porcentaje máximo de RAM
Inicio: «Flags adicionales» y «Porcentaje máximo de RAM».

Las flags de abajo son para quien monta su propio servidor en un VPS o en su ordenador, o quiere entender qué hace cada una. Con el generador de start.sh las tienes listas con la RAM que elijas.

Qué hace lo más importante

FlagQué hace
-Xms / -XmxMemoria mínima y máxima. Iguales para que Java no tenga que redimensionarla.
-XX:+UseG1GCUsa el recolector G1, pensado para baja latencia con heaps grandes.
-XX:MaxGCPauseMillis=200Objetivo de pausa máxima del GC (200 ms).
-XX:+DisableExplicitGCIgnora las llamadas System.gc() que algunos plugins hacen sin necesidad.
-XX:+AlwaysPreTouchReserva toda la memoria al arrancar, evitando picos por asignación tardía.
-XX:+PerfDisableSharedMemEvita escrituras de estadísticas a disco.

Comprobar que funcionan

Instala spark y ejecuta /spark gcmonitor: muestra la frecuencia y la duración de las pausas del GC. Si son cortas y poco frecuentes, las flags hacen su trabajo.

Preguntas frecuentes

¿Puedo usarlas con Fabric o Forge?

Sí, son parámetros de Java y valen para cualquier servidor, aunque están pensadas para Paper. En modpacks grandes ajusta bien la RAM.

¿Por qué `-Xms` y `-Xmx` iguales?

Para que Java no pierda tiempo cambiando el tamaño de la memoria mientras el servidor funciona.

¿Y si pongo más RAM de la que tengo?

El proceso puede cerrarse por falta de memoria. Deja siempre un 10-15 % libre respecto a tu plan.

¿Y ZGC?

Es un recolector alternativo, no un añadido: se usa en lugar de las flags de G1, nunca mezclado con ellas. Para la mayoría de servidores, G1 con las flags de Aikar es lo recomendable.