Saltar al contenido principal

Flags de Aikar para servidores Minecraft

Las Flags de Aikar son un conjunto de parámetros de la JVM (Java Virtual Machine) especialmente optimizados para servidores Minecraft. Fueron desarrolladas por Aikar (mantenedor de Paper) y son el estándar de la industria: prácticamente todo servidor Paper serio las usa.

Su objetivo principal es reducir las pausas de GC (Garbage Collector), que son la causa más frecuente de micro-lag en servidores Java.


Las flags

Para servidores con 12 GB de RAM o más

-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
-Dusing.aikars.flags=https://mcflags.emc.gs
-Daikars.new.flags=true

Para servidores con 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
Ajusta siempre -Xms y -Xmx

Cambia los valores de -Xms y -Xmx según la RAM de tu plan. Deja siempre un margen: para un plan de 8 GB, usa -Xms6G -Xmx6G. Ambos deben ser iguales.


Cómo configurarlas en SkyPanel

Opción A: Variable de Startup (recomendado)

  1. En tu servidor, ve a Startup
  2. Busca el campo Java Flags o JVM Flags (el nombre exacto depende del egg)
  3. Pega las flags (sin -Xms ni -Xmx si esas se configuran por separado en otros campos)
  4. Haz clic en Save y luego Restart

Opción B: Editar el script de arranque

Si el egg no tiene un campo separado para las flags:

  1. Ve a Startup
  2. Busca el campo Startup Command o similar
  3. Añade las flags antes del -jar:
java [FLAGS_AQUÍ] -jar server.jar --nogui

¿Qué hace cada flag?

FlagExplicación
-Xms / -XmxMemoria mínima y máxima del heap. Deben ser iguales para evitar resizing.
-XX:+UseG1GCActiva el recolector de basura G1, diseñado para heaps grandes con baja latencia.
-XX:+ParallelRefProcEnabledProcesa referencias en paralelo durante GC. Reduce las pausas.
-XX:MaxGCPauseMillis=200Objetivo de pausa máxima de GC. G1 intentará no superar 200ms.
-XX:+DisableExplicitGCIgnora llamadas explícitas a System.gc() (algunos plugins/mods las hacen innecesariamente).
-XX:+AlwaysPreTouchPre-aloca toda la memoria al arrancar. Evita picos de lag por allocación tardía.
-XX:G1HeapRegionSize=8MTamaño de las regiones del heap de G1. 8M es óptimo para servidores Minecraft.
-XX:InitiatingHeapOccupancyPercent=15GC empieza a limpiar cuando el heap está al 15%. Evita acumulación.
-XX:+PerfDisableSharedMemDesactiva la memoria compartida de JVM para estadísticas de rendimiento (reduce I/O).
-XX:MaxTenuringThreshold=1Los objetos pasan rápido a la generación old, reduciendo copias innecesarias.

Flags adicionales para Java 21+

Si tu servidor usa Java 21, añade también estas flags para aprovechar el Virtual Threads (Project Loom):

-XX:+UseZGC
-XX:+ZGenerational
G1GC vs ZGC

G1GC es el recomendado estándar. ZGC (con soporte para generaciones desde Java 21) ofrece pausas de GC aún menores, especialmente en servidores con mucha RAM (16 GB+). Si tienes un plan premium, prueba ZGC.


Verificar que las flags se aplican

Después de reiniciar, busca en los logs de arranque:

JVM Flags: XX:... (las flags que configuraste)

También puedes ejecutar en consola:

/spark gcmonitor

Spark mostrará la frecuencia y duración de los ciclos de GC. Si las pausas son menores de 200ms y poco frecuentes, las flags funcionan correctamente.


Preguntas frecuentes

¿Puedo usar estas flags con Fabric o Forge?

Sí. Las flags de Aikar son genéricas para cualquier servidor Java. Funcionan con Paper, Spigot, Fabric, Forge y cualquier otro software de servidor Minecraft.

¿Qué pasa si pongo más RAM de la que tengo?

El sistema operativo matará el proceso Java por Out Of Memory (OOM). El servidor caerá. Siempre deja margen: si tu plan tiene 8 GB, no pongas más de 6-7 GB en las flags.

¿Debo usar -server o -client?

No es necesario especificarlo. La JVM moderna detecta automáticamente el modo server basándose en los recursos del sistema. Añadirlo no tiene efecto real.

Las flags no parecen tener efecto, ¿por qué?

Asegúrate de que:

  1. Reiniciaste el servidor después de guardar los cambios
  2. Las flags están en el campo correcto del egg (no en el nombre del servidor)
  3. Los valores de -Xms y -Xmx son iguales y no superan la RAM del plan

Fuentes y más información