Ekran Kartlı Sunucu Satışları Başladı. İncele
Sunucu Yönetimi ve Panel

Minecraft Sunucu RAM Ayarları, ZGC ve JVM Flag’leri

26.x ile varsayılan ZGC’ye geçildi. Xms/Xmx değerleri, ZGC ve G1GC flag’leri, Aikar’s Flags’in güncel durumu ve doğru bellek planı.

  • 9 dk okuma
  • Güncelleme:
  • Yayın:
  • Batihost Teknik Ekibi

Kısaca Özet

  • Minecraft sunucu RAM ayarı iki satırda özetlenir: -Xms ve -Xmx daima eşit verilir ve toplam RAM’in tamamı heap’e ayrılmaz — işletim sistemine ve JVM’in heap dışı belleğine 2 GB pay bırakın.
  • 8 GB paket için -Xms6G -Xmx6G, 12 GB için -Xms10G -Xmx10G, 16 GB için -Xms14G -Xmx14G, 32 GB için -Xms28G -Xmx28G.
  • 26.1 ile duyurulan “G1GC’den ZGC’ye geçiş” İSTEMCİ tarafıdır. Sunucu jar’ının launcher’ı yoktur; bayrak vermezseniz 26.2 sunucunuz Java 25 üzerinde G1GC ile çalışır.
  • Aikar’s Flags 26.x sunucularında hâlâ geçerlidir. 8-12 GB heap’te G1GC + Aikar’s Flags, 16 GB ve üzeri heap ya da ağır modpackte ZGC değerlendirilir. -XX:+ZGenerational Java 25’te obsolete, kullanmayın.

Minecraft sunucu RAM ayarı, -Xms ve -Xmx değerlerini eşit vermek ve toplam sistem belleğinin tamamını heap’e boşaltmamakla başlar. 8 GB’lık bir pakette doğru başlangıç -Xms6G -Xmx6G, 16 GB’lık pakette -Xms14G -Xmx14G’dir. Kalan 2 GB işletim sistemi, JVM’in heap dışı belleği (metaspace, thread yığınları, ağ tamponları) ve disk önbelleği içindir. Bu payı bırakmadığınızda sunucu bir süre sorunsuz görünür, sonra takas alanına düşüp saniyeler süren donmalar yaşatır.

Bu sayfada heap boyutunu paket büyüklüğüne göre nasıl seçeceğinizi, 26.x ile çokça yanlış aktarılan ZGC konusunun sunucu tarafındaki gerçeğini, Aikar’s Flags’in 2026’daki durumunu ve bellek kullanımını nasıl doğrulayacağınızı bulacaksınız. Verilen bayrak setleri Paper, Purpur, Spigot, Forge ve Fabric sunucularının hepsinde aynı şekilde çalışır; fark yalnızca çalıştırdığınız jar dosyasının adındadır.

Minecraft sunucusunda RAM tam olarak neye harcanır?#

Sunucu belleğinin büyük kısmı yüklü chunk’lara gider. Her oyuncunun çevresinde view-distance ve simulation-distance ayarlarıyla belirlenen bir chunk kümesi RAM’de tutulur; oyuncu sayısı arttıkça bu küme doğrusal değil, üst üste binen alanlar nedeniyle kırıklı bir eğriyle büyür. İkinci büyük kalem entity’lerdir: item frame, armor stand, yerde bekleyen eşya, mob çiftliklerindeki yaratıklar. Üçüncü kalem eklenti verisidir — ekonomi kayıtları, bölge tanımları, oyuncu profilleri, arazi koruması.

Heap dışında kalan bellek de gerçektir ve görmezden gelinemez. JVM’in metaspace alanı yüklenen tüm sınıfları tutar; 40-50 eklentili bir sunucuda bu tek başına birkaç yüz megabayt eder. Netty’nin doğrudan bellek tamponları, GC’nin kendi veri yapıları ve her iş parçacığının yığını da toplam kullanımı -Xmx değerinin üstüne çıkarır. İşletim sisteminde “java.exe 7,4 GB kullanıyor” görüyorsanız ve -Xmx6G verdiyseniz ortada hata yok, normal davranış bu.

BilgiChunk yükleme davranışını değiştirerek RAM ihtiyacını gerçekten düşürebilirsiniz. view-distance=8 ile view-distance=12 arasındaki fark, 30 oyunculu bir sunucuda gigabaytlarla ölçülür. Ayrıntılar view distance ve simulation distance ayarları sayfasında.

Xms ve Xmx neden eşit verilir?#

-Xms JVM’in açılışta ayırdığı heap, -Xmx ise büyüyebileceği üst sınırdır. Masaüstü uygulamalarında bu ikisini farklı vermek mantıklıdır, çünkü program çoğu zaman az bellekle çalışır. Minecraft sunucusu ise açıldığı andan itibaren tavan değere doğru koşar: dünya yüklenir, eklentiler önbelleklerini kurar, oyuncular girer. Heap’i kademeli büyütmek burada yalnızca maliyet üretir.

Değerleri eşitlediğinizde JVM tek seferde bellek ayırır, adres alanı boyunca genişleme yapmaz ve -XX:+AlwaysPreTouch ile birlikte sayfaları önceden dokunulmuş hale getirir. Açılış birkaç saniye uzar, karşılığında ilk yarım saatteki tick sıçramaları kaybolur. Bu yüzden aşağıdaki tüm örneklerde iki değer birbirine eşittir.

Pakete göre doğru heap değeri#

Aşağıdaki tablo Batihost paketlerinin RAM kapasitesine göre kullanılacak heap değerlerini verir. Sol sütun makinenin toplam belleği, ikinci sütun jar’a vereceğiniz değerdir. Aradaki fark bilinçli olarak bırakılan işletim sistemi payıdır.

Paket RAMHeap (-Xms / -Xmx)Tipik senaryoÖnerilen GC
8 GB-Xms6G -Xmx6G2-10 oyuncu, vanilla veya hafif eklentiliG1GC + Aikar’s Flags
12 GB-Xms10G -Xmx10G10-30 oyuncu, eklentili Paper sunucuG1GC + Aikar’s Flags
16 GB-Xms14G -Xmx14G30-60 oyuncu, minigame / çok dünyalı, Forge-Fabric modpackG1GC (büyük heap varyantı) veya ZGC
32 GB-Xms28G -Xmx28G60+ oyuncu, proxy’li sunucu ağı, büyük modpackZGC değerlendirilir
Paket büyüklüğüne göre önerilen Java heap değerleri ve çöp toplayıcı tercihi

Sunucu ağı işletiyorsanız hesabı proxy’yi de katarak yapın. Velocity veya BungeeCord süreci oyun mantığı çalıştırmadığı için görece hafiftir, ama aynı makinede duruyorsa payını ayırmanız gerekir. Arka arkaya iki alt sunucu ve bir proxy barındıran 32 GB’lık bir makinede heap’leri örneğin 12 GB + 12 GB + 2 GB olarak bölmek, tek sunucuya 28 GB vermekten daha akıllıcadır. Mimari kararı için BungeeCord ve Velocity kurulum rehberine göz atın.

DikkatPaylaşımlı vCPU’lu ucuz sunucularda RAM rakamı kâğıt üstünde büyük görünse de tick döngüsü tek çekirdekte koştuğu için TPS düşük kalır. Minecraft’ta belirleyici olan çekirdek sayısı değil saat hızıdır; yüksek frekanslı AMD Ryzen 9 tabanlı bir sistem tercih edin. Gerekçeleri donanım seçimi sayfasında açıkladık.

26.x ile ZGC’ye mi geçildi? Sunucu tarafındaki gerçek#

26.1 sürüm notlarında yer alan “garbage collection has been changed from G1GC to ZGC for compatible computers” satırı forumlarda sunucu değişikliği sanıldı. Değil. Bu satır Minecraft Launcher’ın oyun istemcisi için ürettiği JVM argümanlarını anlatır. Aynı sürüm notundaki “oyun artık varsayılan olarak 4 GB RAM ayırıyor” maddesi de istemci tahsisidir.

Sunucu jar’ının bir launcher’ı yoktur. java -jar paper.jar yazdığınızda hangi çöp toplayıcının kullanılacağını yalnızca sizin verdiğiniz bayraklar ve JVM’in kendi varsayılanı belirler. Java 25’te JEP 523 ile G1, kısıtlı ortamlar dahil tüm ortamlarda genel varsayılan çöp toplayıcıdır. Yani bayraksız açtığınız bir 26.2 sunucusu ZGC değil G1GC ile çalışır.

Uyarıİnternette dolaşan -XX:+UseZGC -XX:+ZGenerational kombinasyonunu kopyalamayın. JEP 490 ile ZGC’nin non-generational modu kaldırıldı; -XX:+ZGenerational Java 25’te obsolete durumdadır ve her açılışta uyarı basar. Doğru kullanım yalnızca -XX:+UseZGC şeklindedir.

Aikar’s Flags: 2026’da hâlâ geçerli#

Aikar’s Flags, G1GC’yi Minecraft’ın ayırma davranışına göre ayarlayan bir bayrak setidir. PaperMC’nin resmî dokümanı 26.x çıkışlarından sonra geri çekilmedi; set hâlâ G1GC tabanlıdır ve 8-12 GB heap aralığında en öngörülebilir sonucu verir. “Aikar’s Flags artık geçersiz” bilgisi yanlıştır.

12 GB’lık bir pakette (10 GB heap) tam komut şu şekildedir. Tek satırdır, satır sonlarını silmeden kopyalayacaksanız birleştirin.

java -Xms10G -Xmx10G --add-modules=jdk.incubator.vector -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

12 GB’ın üzerindeki heap için değişen dört bayrak#

Heap 12 GB’ı aştığında Aikar’s Flags dört değeri değiştirmenizi ister. Genç kuşak büyütülür, bölge boyutu iki katına çıkar ve toplama daha geç tetiklenir:

-XX:G1NewSizePercent=40
-XX:G1MaxNewSizePercent=50
-XX:G1HeapRegionSize=16M
-XX:G1ReservePercent=15
-XX:InitiatingHeapOccupancyPercent=20

Geri kalan bayraklar aynen kalır. 16 GB’lık pakette bu değişikliklerle birlikte -Xms14G -Xmx14G kullanırsınız.

ZGC ne zaman mantıklı olur?#

ZGC duraklama sürelerini heap büyüklüğünden bağımsız olarak milisaniyenin altında tutmayı hedefler. Buna karşılık daha fazla CPU zamanı ve daha fazla heap dışı bellek harcar. Pratik ayrım şudur: 8-12 GB heap’te G1GC + Aikar’s Flags kalın; 16 GB ve üzeri heap ya da yüzlerce mod barındıran ağır bir modpack çalıştırıyorsanız ZGC’yi deneyin ve iki yapılandırmayı kendi sunucunuzda ölçün.

java -Xms28G -Xmx28G -XX:+UseZGC -XX:+AlwaysPreTouch -XX:+DisableExplicitGC -XX:+PerfDisableSharedMem -jar paper.jar --nogui

ZGC’ye geçerken Aikar’s Flags’teki G1 bayraklarını (G1NewSizePercent, G1HeapRegionSize, MaxGCPauseMillis gibi) taşımayın; bunlar G1’e özgüdür ve ZGC ile birlikte ya yok sayılır ya da hata verir. İki seti karıştırmak, forumlarda en sık rastlanan “sunucu açılmıyor” nedenlerinden biridir.

İpucuKarar vermeden önce ölçün. Sunucuyu bir hafta G1GC + Aikar’s Flags ile, sonraki hafta ZGC ile aynı oyuncu yoğunluğunda çalıştırın ve iki dönemin tick süresi dağılımını karşılaştırın. Kağıt üzerindeki üstünlük her dünyada aynı sonucu vermez.

Java 25 kurulumu ve gerekli indirmeler#

26.1 ve sonrası Java 25 ister; daha eski bir JDK ile açmaya çalışırsanız UnsupportedClassVersionError alırsınız. Sunucu için LTS olan Java 25’te kalın, Java 26 LTS değildir. Eski sürümlerde kalan sunucular için eşleşme tablosu hangi Java sürümü gerekir sayfasındadır.

İndirmeniz gerekenler
  • Eclipse Temurin JDK 25Önerilen LTS Windows x64 / Linux x64.msi · .tar.gzÜcretsiz
    İndir
  • Amazon Corretto 25Alternatif Her platformSHA256 doğrulamalı
    İndir
  • Paper 26.2 sunucu jar Her platform.jar
    İndir
  • spark profilerÖlçüm için Paper · Fabric · Forge.jar
    İndir

Bağlantılar resmî kaynaklara gider. Üçüncü taraf sitelerden jar veya JDK indirmeyin.

Bayrakları başlatma dosyasına yazmak#

Bayrakları konsola her seferinde elle yazmazsınız; bir başlatma dosyasına koyarsınız. İşletim sistemine göre ayrıntılı adımlar ayrı sayfalarda:

  1. Windows tarafında start.bat#

    Sunucu klasöründe bir start.bat oluşturup java komutunu içine yazarsınız. Dosyanın tam yapısı, kodlama tuzakları ve RAM değerinin nereye yazılacağı start.bat oluşturma sayfasında anlatılıyor.

  2. Linux tarafında start.sh ve servis#

    Aynı komut bir start.sh içine yazılır ve çalıştırma izni verilir. Sunucunun yeniden başlatmalarda otomatik ayağa kalkması için systemd servisi oluşturma ya da oturum kapansa da çalışması için screen/tmux kullanımı sayfasını izleyin.

  3. Panel kullanıyorsanız#

    Pterodactyl veya benzeri bir panelde bayraklar sunucunun başlatma parametreleri alanına girilir, RAM sınırı ise panelin bellek limitinden ayrıca uygulanır. İki değeri çelişkili verirseniz konteyner OOM ile öldürülür; panelin limiti heap’ten en az 2 GB büyük olmalıdır.

Bellek kullanımını izlemek ve doğrulamak#

Ayarı yaptıktan sonra gerçekten uygulandığını doğrulayın. En hızlı yol, sunucu çalışırken JVM’in aldığı argümanlara bakmaktır:

jcmd $(pgrep -f paper.jar) VM.flags
jcmd $(pgrep -f paper.jar) GC.heap_info

Windows tarafında aynı bilgiyi jcmd -l ile süreç kimliğini bulup aynı alt komutlarla alırsınız. Uzun vadeli takip içinse GC günlüğü açın; bu bayrak günlükleri döndürerek beş dosyada tutar ve diski şişirmez:

-Xlog:gc*:file=logs/gc.log:time,uptime:filecount=5,filesize=10M

Oyun içinden bakmak isterseniz spark eklentisiyle /spark healthreport komutu TPS, tick süresi ve bellek kullanımını tek ekranda özetler. /spark profiler start ile de hangi eklentinin ne kadar tick harcadığını çıkarırsınız. Rapor okumayı spark ve timings analizi sayfasında adım adım gösterdik.

En sık yapılan RAM hataları#

Tüm belleği heap’e vermek#

16 GB’lık makinede -Xmx16G yazmak klasik hatadır. JVM’in heap dışı ihtiyacı ve işletim sistemi payı kalmadığı için sistem takasa düşer, tick süresi saniyelere çıkar. Doğrusu -Xmx14G’dir.

Küçük harf G kullanmak veya birim yazmamak#

-Xmx6g geçerlidir ama -Xmx6 yazarsanız JVM bunu 6 bayt olarak okur ve süreç anında ölür. -Xms6G -Xmx6G biçiminde, birimiyle birlikte yazın.

G1 ve ZGC bayraklarını karıştırmak#

Aikar’s Flags setinin üstüne -XX:+UseZGC eklemek işe yaramaz, çelişkili yapılandırma üretir. Bir GC seçin, o GC’nin bayraklarıyla devam edin.

RAM’i lag ilacı sanmak#

“Can’t keep up!” uyarısı çoğunlukla bellek değil CPU ve disk I/O kaynaklıdır. 8 GB’tan 16 GB’a çıkmak entity yığılmasını çözmez. Uyarının gerçek nedenlerini Can’t keep up uyarısı sayfasında, sunucu genelindeki ayarları ise paper.yml ve spigot.yml optimizasyon rehberinde bulabilirsiniz.

Eski sürümün bayraklarını 26.2’ye taşımak#

1.12.2 döneminden kalma -XX:+UseConcMarkSweepGC gibi bayraklar modern JVM’de kaldırıldı; sunucu açılmaz. 26.1 ile gelen unobfuscated yapının eklenti tarafındaki etkileri için 26.1 kurulum sayfasına bakın.

Donanım tarafında ne değişir?#

Bellek ayarı ancak altındaki donanım tutarlıysa anlam kazanır. Minecraft’ın ana tick döngüsü tek çekirdekte çalıştığı için yüksek saat hızı, çekirdek sayısından önce gelir; Ryzen 9 7900X veya 7950X sınıfı bir işlemci ideal, Ryzen 9 3900X makul alt sınırdır. Disk tarafında chunk okuma/yazma gecikmesi doğrudan tick süresine yansıdığı için NVMe SSD şarttır — vanilla sunucuda en az 50 GB, modlu sunucuda 100 GB ve üzeri planlayın.

Bu profildeki hazır paketleri Minecraft sunucu paketleri sayfasında, tüm kaynağı kendiniz yönetmek isterseniz yüksek frekanslı Ryzen VDS tarafında bulursunuz. Modlu sunucuların bellek profili farklı olduğu için modpack rehberindeki RAM notlarını da okumanızı öneririz.

Özetle#

Xms ve Xmx’i eşitleyin, toplam RAM’den 2 GB pay ayırın ve alt sınır olarak 8 GB paket / 6 GB heap ile başlayın. 8-12 GB heap’te G1GC ve Aikar’s Flags kullanın; 16 GB üzeri heap veya ağır modpackte ZGC’yi ölçerek değerlendirin, -XX:+ZGenerational yazmayın. 26.x’in ZGC değişikliğinin istemciye ait olduğunu unutmayın: sunucunuzun çöp toplayıcısı tamamen sizin verdiğiniz bayraklara bağlıdır. Ayar sonrası jcmd ve spark ile doğrulama yapın; RAM’i lag ilacı olarak değil, doğru boyutlandırılması gereken bir kaynak olarak ele alın.

Sıkça Sorulan Sorular#

Minecraft sunucusuna kaç GB RAM vermeliyim?

Alt sınır 8 GB’lık bir pakettir ve bunun 6 GB’ını heap olarak verirsiniz. 10-30 oyunculu eklentili bir Paper sunucusu 10-12 GB, 30-60 oyunculu veya çok dünyalı yapılar 16 GB, Forge/Fabric modpackleri 16 GB (büyük modpackte 24-32 GB), proxy’li sunucu ağları 32 GB ve üzeri ister. Ayrıntılı tablo için RAM hesaplama sayfamıza bakın.

Xms ve Xmx aynı olmalı mı?

Evet, sunucu tarafında Xms ve Xmx daima eşit verilir. Farklı verirseniz JVM heap’i çalışma anında büyütüp küçültür; her genişleme sırasında ek çöp toplama turu ve bellek haritalama maliyeti doğar, bu da tick süresine yansır. Eşit değer verildiğinde heap en baştan tek seferde ayrılır ve TPS grafiğiniz düzleşir.

Minecraft 26.2 sunucusu otomatik ZGC mi kullanır?

Hayır. 26.1 sürüm notlarındaki “garbage collection has been changed from G1GC to ZGC” satırı Minecraft Launcher’ın oyun istemcisi için verdiği JVM varsayılanını anlatır. Sunucu jar’ının launcher’ı yoktur, bayrakları siz verirsiniz. Java 25’te G1 hâlâ JVM’in genel varsayılanıdır; bayraksız çalıştırılan bir 26.2 sunucusu G1GC ile açılır.

Aikar’s Flags 2026’da hâlâ kullanılıyor mu?

Evet, kullanılıyor. PaperMC’nin resmî Aikar’s Flags dokümanı 26.x çıkışlarından sonra geri çekilmedi ve hâlâ G1GC tabanlı bayrak setini öneriyor. 8-12 GB heap aralığında en öngörülebilir sonucu bu set verir. ZGC bir zorunluluk değil, büyük heap’lerde değerlendirilebilecek bir alternatiftir.

Sunucuya RAM eklediğim halde lag geçmiyor, neden?

Çünkü Minecraft lag’inin çoğu bellek değil CPU kaynaklıdır. Ana tick döngüsü tek çekirdekte çalışır; entity yığılması, hopper zincirleri, redstone ve kötü yazılmış eklenti heap büyüterek çözülmez. Önce spark ile profil çıkarın, sonra optimizasyon adımlarını uygulayın.

Fazla RAM vermek zararlı olur mu?

Sunucunun fiziksel RAM’inden fazlasını heap olarak verirseniz sistem takas alanına düşer ve sunucu donar. Ayrıca çok büyük heap, G1GC’de tek bir tam toplama turunu uzatabilir. Kural basit: toplam RAM eksi 2 GB. 16 GB’lık makinede -Xmx14G doğrudur, -Xmx16G yanlıştır.

OutOfMemoryError alıyorum, heap’i büyütmek çözer mi?

Bazen çözer, çoğu zaman semptomu erteler. Bellek sızdıran bir eklenti veya sürekli yüklü kalan chunk varsa büyütülen heap yalnızca çöküşü geciktirir. Önce -Xlog:gc* ile GC günlüğü alın, ardından OutOfMemoryError çözüm sayfasındaki heap dump adımlarını izleyin.

Java 26 çıktı, sunucuda kullanmalı mıyım?

Hayır, sunucu için Java 25 LTS’te kalın. Java 26 LTS değildir; güncelleme penceresi kısadır ve eklenti/mod ekosisteminin test ettiği hat Java 25’tir. Minecraft 26.1 ve sonrası zaten Java 25 ister. Sürüm eşleşmesinin tamamı için Java sürüm rehberine bakın.

Sunucu Yönetimi ve Panel — Tüm Rehberler#

  1. Pterodactyl Panel Kurulumu: Sıfırdan Tam Rehber
  2. Pterodactyl Panel Kullanım Rehberi
  3. Minecraft server.properties Ayarları (Tam Liste)
  4. Minecraft Sunucu RAM Ayarları, ZGC ve JVM Flag’leri
  5. Minecraft Sunucu Yedekleme Rehberi
  6. Minecraft Sunucusunda OP Verme ve Yetki Yönetimi
  7. Minecraft Whitelist / Beyaz Liste Nasıl Açılır?
  8. Minecraft Sunucu Port Yönlendirme ve Port Açma
  9. Minecraft Sunucusuna Domain Bağlama ve SRV Kaydı
  10. Minecraft Sunucusunu Başka Bir Sunucuya Taşıma Rehberi
  11. Minecraft Sunucu Konsol Komutları ve Kullanımı

Bu rehber Batihost teknik ekibi tarafından hazırlanmış ve tarihinde güncellenmiştir. Eksik veya hatalı bulduğunuz bir bilgi varsa bize bildirin.

Başa dön