Tüm Blog Yazılarına Dön
Performans 2026 Güncel Rehber

FiveM Sunucularında Lua Bellek Sızıntıları (Memory Leak) ve GC Optimizasyonu (2026)

Sunucunuz zaman geçtikçe RAM tüketimini artırıyor ve çökmelere sebep mi oluyor? Lua bellek sızıntılarını (memory leak) tespit etme, Garbage Collection (GC) yönetimi ve RAM'i sabitleme adımlarını keşfedin.

DX
Dexta Store Ekibi
12 Eylül 20267 dk okuma1 okuma
FiveM Sunucularında Lua Bellek Sızıntıları (Memory Leak) ve GC Optimizasyonu (2026)

Sunucunuz açıldıktan birkaç saat sonra RAM kullanımının sürekli yükseldiğini, oyunda anlık takılmaların (stuttering) başladığını veya FXServer'ın beklenmedik anlarda çöktüğünü fark ettiniz mi? Bu durum genellikle zayıf kodlanmış scriptlerin arkasında bıraktığı Lua Bellek Sızıntıları (Memory Leak) nedeniyle gerçekleşir.

2026 yılı itibarıyla FiveM altyapılarında yüksek oyuncu sayılarına ulaşmak sadece güçlü sunucu donanımıyla değil, doğru bellek yönetimiyle mümkündür. Bu rehberde hem yeni başlayan sunucu sahipleri hem de tecrübeli geliştiriciler için bellek sızıntılarını tespit etme, düzeltme ve Lua Garbage Collector (Çöp Toplayıcı) optimizasyonu adımlarını tek tek inceliyoruz.

1. Lua Bellek Sızıntısı (Memory Leak) Nedir?

Lua dilinde bir değişken, tablo veya fonksiyon referansı işi bittiğinde sistem belleğinden silinmelidir. Eğer yazdığınız kod bu veriyi hafızada unutursa ve sürekli yeni veri oluşturmaya devam ederse, RAM kullanımı artar. Buna Memory Leak adı verilir.

💡 İpucu: Sunucunuzun anlık RAM kullanımını konsoldan veya txAdmin panelindeki Metrics sekmesinden takip edebilirsiniz. Eğer oyuncu sayısı sabitken RAM kullanımı sürekli tırmanıyorsa, kesinlikle bir bellek sızıntınız vardır.

2. Yaygın Bellek Sızıntı Hataları ve Çözümleri

Bellek sızıntılarının %90'ı acemi script geliştiricilerinin yaptığı şu iki temel hatadan kaynaklanır:

A. Global Değişken Kullanımı (En Büyük Hata)

Scriptlerinizde local anahtar kelimesini kullanmadığınızda değişken global hafızaya kaydolur ve GC (Garbage Collection) tarafından asla temizlenmez.

❌ Hatalı Kod (`resources/[scripts]/qb-test/server.lua`):

lua
RegisterNetEvent('item:kullan', function(itemName)
    -- 'local' kullanılmadığı için playerData global tabloda birikir!
    playerData = { src = source, item = itemName, time = os.time() }
    TriggerClientEvent('chat:addMessage', source, { args = { playerData.item } })
end)

✅ Doğru Kod:

lua
RegisterNetEvent('item:kullan', function(itemName)
    -- 'local' ile scope içinde tutulur, fonksiyon bitince GC siler.
    local playerData = { src = source, item = itemName, time = os.time() }
    TriggerClientEvent('chat:addMessage', source, { args = { playerData.item } })
end)

B. Sonsuz Tablo Büyümesi (Clearing Tables)

Sürekli veri eklediğiniz dizileri (array/table) oyuncu oyundan çıktığında temizlemezseniz, sunucu günlerce açık kaldığında RAM gigabaytlarca şişer.

✅ Doğru Tablo Temizleme Yöntemi:

lua
local ActivePlayersData = {}

AddEventHandler('playerDropped', function(reason)
    local src = source
    if ActivePlayersData[src] then
        ActivePlayersData[src] = nil -- Veriyi silerek RAM'den düşmesini sağlayın
    end
end)

3. Lua Garbage Collection (GC) Manuel Tetikleme ve Optimizasyon

FiveM'in kullandığı Lua 5.4 runtime'ı otomatik çöp toplayıcıya sahiptir. Ancak çok yoğun veri işleyen scriptlerde GC yetersiz kalabilir. Kod seviyesinde periyodik temizlik yaptırarak RAM tüketimini kontrol altına alabilirsiniz.

Aşağıdaki kodu ağır iş yapan scriptinizin (örneğin devasa bir envanter veya garaj scripti) server.lua dosyasına ekleyebilirsiniz:

lua
-- Her 15 dakikada bir Lua Çöp Toplayıcısını manuel tetikleme
CreateThread(function()
    while true do
        Wait(15 * 60 * 1000) -- 15 Dakika
        local beforeKB = collectgarbage("count")
        collectgarbage("collect") -- GC Çalıştır
        local afterKB = collectgarbage("count")
        
        print(string.format("^2[GC OPTİMİZASYONU] Bellek Temizlendi: %.2f MB -> %.2f MB^7", beforeKB / 1024, afterKB / 1024))
    end
end)
⚠️ Önemli Uyarı: collectgarbage("collect") komutunu Wait() olmayan sık döngülerin (While loops) içine kesinlikle koymayın! Bu işlem CPU'ya anlık yük bindirebilir. Sadece geniş zaman aralıklarında (10-15 dakikada bir) kullanılmalıdır.

4. Sıfırdan Optimize Altyapı Kullanımı

Sunucunuzdaki onlarca scriptin bellek sızıntılarını teker teker tespit edip düzeltmek haftalarınızı alabilir. Eğer bu optimizasyonlarla sıfırdan uğraşmak istemiyorsanız, önceden optimize edilmiş ve bellek testleri tamamlanmış DxAV1 - Roleplay Paketi paketimizi inceleyebilirsiniz.

5. Adım Adım Sunucu RAM Stabilizasyon Adımları

  1. 1Sorunlu Scripti Bulun: Sunucu konsoluna resmon 1 yazın veya fxserver konsolundan profiler start komutunu çalıştırarak RAM'i en çok tüketen scripti belirleyin.
  2. 2Değişkenleri Denetleyin: Belirlediğiniz scriptin server.lua ve client.lua dosyalarında local yazılmamış tüm değişkenleri güncelleyin.
  3. 3Event Handler Temizliği: Silinmeyen AddEventHandler dinleyicilerini kaldırın.
  4. 4Sunucu CFG Ayarı: server.cfg dosyanızda güncel FXServer artifact sürümlerini kullanarak Lua 5.4 hızlandırmalarından faydalanın.

Sıkça Sorulan Sorular (SSS)

S: Sunucumun RAM kullanımı kaç GB olmalıdır?

C: 64 kişilik standart bir FiveM roleplay sunucusu varsayılan ayarlarda 3 GB - 6 GB arası RAM tüketmelidir. Eğer 10-12 GB üzerini görüyorsanız kesinlikle bir bellek sızıntısı mevcuttur.

S: `collectgarbage()` kullanmak sunucuyu kasartır mı?

C: Hayır, doğru zaman aralıklarında (örneğin 15-30 dakikada bir) çalıştırıldığında anlık bellek birikmesini temizler ve aksine takılmaları (stuttering) önler.

S: Bellek sızıntısı müşteri tarafında (client) FPS düşürür mü?

C: Evet. Client-side scriptlerde yapılan bellek sızıntıları oyuncunun RAM ve VRAM kullanımını şişirerek oyunun çökmesine (Crash) neden olur.

Bu Rehber İşinize Yaradı mı?

Fikrinizi belirterek içeriklerimizi geliştirmemize yardımcı olun.

Topluluk
DX
Teknik İçerik Ekibi

Dexta Store Geliştirici Grubu

FiveM sunucuları için yüksek FPS optimizasyonlu hazır paketler, özel scriptler, MLO haritaları ve DXA koruma mimarisi geliştiren teknik ekibimiz tarafından hazırlanmıştır.

Premium FiveM Çözümleri

Sunucunuzu Bir Üst Seviyeye Taşımaya Hazır Mısınız?

Sıfırdan uğraşmak yerine; test edilmiş, yüksek FPS garantili ve 7/24 anında teslim edilen hazır roleplay paketlerimizi keşfedin.

Tüm Paket ve Scriptleri İncele

İlginizi Çekebilecek Diğer Rehberler