FATAL ERROR: JavaScript heap out of memory
Bir script mevcut belleğin tamamını tüketti ve sunucuyu da beraberinde götürdü. Bir şey tutuluyor ve hiç bırakılmıyor.
Önce şunu yap
Hangi kaynak olduğunu ve sunucunun ne kadar süredir açık olduğunu not et. Bunun doğru düzgün bulunması gerekiyor.
Ne anlama gelir
Node tabanlı bir kaynak, V8'in izin verdiğinden fazla bellek kullandı ve çalışma zamanı iptal etti. FXServer'da bu tüm sunucuyu götürebilir, çünkü JavaScript çalışma zamanı süreç içindedir.
Neden olur
Ne sıklıkla doğru cevap olduğuna göre sıralı.
- 1
Bir sızıntı — biriken ve hiç temizlenmeyen bir şey
Klasik olan, katılımda eklenen ve ayrılışta hiç kaldırılmayan oyuncu başına bir nesnedir. Bir saat boyunca sorunsuz görünür ve zirvede ölür.
- 2
Belleğe devasa bir şey yüklemek
Büyük bir dosyayı ya da komple bir tabloyu tek seferde bir diziye okumak.
- 3
Sınırsız bir önbellek
Sınırsız çeşitlilikte bir şeyle anahtarlanmış, hiç boşaltılmayan bir Map.
- 4
Bir kez yerine olay başına kaydedilen bir dinleyici
Her tetiklemede biriken işleyiciler.
- 5
Basitçe iş yükü için fazla az bellek
Gerçekten varsayılan heap'ten fazlasına ihtiyaç duymak.
Hangisinin seninki olduğu nasıl anlaşılır
Süreci bir saat boyunca izle. Nüfus zirveleri arasında tırmanan ve hiç inmeyen bellek bir sızıntıdır; belirli bir işlemde sıçrayan bellek o işlemdir.
Nereye bakmalı
Büyüyen her yapı: ölen kaynaktaki modül düzeyinde bir nesne üzerindeki her push, set ve [key] =.
Nasıl düzeltilir
Bağlantı koptuğunda temizle, ve her önbelleği sınırla:
on('playerDropped', (reason) => {
const src = global.source
delete playerState[src] // insanların unuttuğu satır
})Heap'i yükseltmek zaman kazandırır, bir sızıntıyı düzeltmez:
# server.cfg — geçici bir çare, çözüm değil set node_args "--max-old-space-size=4096"
Hâlâ kendi kodunda mı takıldın?
Bu sayfa, bu hatanın genelde ne anlama geldiğini anlatır. Konsolunu Server Fixer'a yapıştır; içindeki her şeyi sıraya dizer ve önce ne yapman gerektiğini söyler. Kendin uğraşmak istemiyorsan ORBIE script'i onarır ve kaynağı sunucuna atmaya hazır geri verir.
bug_reportServer Fixer'ı açBu tür bir hata için Script Optimizer script'i okur ve bunun arkasındaki kodu onarır.