Soru Node.js'de bellek sınırı (ve krom V8)


Web'deki birçok yerde, göreceksiniz:

Bir düğüm işleminde bellek sınırı nedir?

ve cevap:

Şu anda, v8 varsayılan olarak 32 bit sistemlerde 512mb bellek sınırına ve 64 bit sistemlerde 1 gb'ye sahiptir. Limit, -max-eski-alan-büyüklüğünü maksimum ~ 1 gb (32-bit) ve ~ 1.7gb (64-bit) olarak ayarlayarak yükseltilebilir, ancak tek işleminizi birkaç işçiye bölmeniz önerilir. Hafıza limitlerine isabet ediyorsanız.

Birisi, node.js sık güncellenen gibi görünüyor bu durumda onaylayabilirsiniz ??? *Ve daha da önemlisi, yakın gelecekte böyle olacak mı ???*

Javascript nesnesinin 4gb ile uğraşması gereken javascript kodu yazmak istiyorum (ve hız bir sorun olmayabilir)

Eğer bunu düğümde yapamazsam, javada (64bit'lik bir makinede) sonuçlanacağım ama ben ...


46
2017-08-25 16:30


Menşei


Dünyada JS nesnelerinde 4GB ne kadar sürebilir? - Dominic Barnes
@ dominic-barnes: Görüntüler. Filmler. Heck, önemli mi? Bir gün bir şey olacak. Örneğin bir MMORPG. Sınırlamaların acımasız olduğunu ve v8'in orijinal taslağında adreslemek için 32-bit'lik bir invertör kullanmanın ciddi bir programcı hatası olduğunu kabul ediyorum. - Elf Sternberg
Eğer 4gb veriye sahip olmak istiyorsanız, bunu JS nesneleri olarak yapamazsınız. Belki bu link yardımcı olabilir? developer.mozilla.org/en/javascript_typed_arrays - goatslacker
dediniz ki: "4gb'lik bir veriye sahip olmak istiyorsanız bunu JS nesneleri olarak yapamazsınız." Eğer bu ifade doğruysa (ve bir süredir doğru tutulacaksa) nodejs'in hype olduğunu düşünürdüm. Bu yüzden umarım yanılıyorsunuzdur. - chacko
@Dominic Barnes - çok fazla bellek kullanan ffi ile paylaşılan bir libya çağırıyor - Ben Burns


Cevaplar:


Bu, Node.js'yi kullananlar için büyük bir endişe kaynağı oldu ve iyi haberler var. V8 için yeni bellek sınırı artık 64bit için bilinmemektedir (test edilmemiştir) ve 32bit ortamlarda 32bit adres alanına kadar yükseltilmiştir.

Daha fazla bilgi edinin: http://code.google.com/p/v8/issues/detail?id=847


18
2017-09-19 20:48



Hala (64bit ile bile) --max-old-space-size = 10000 (10GB için) seçeneği ile daha fazla bellek istediğimi belirtmem gerekiyor, aksi takdirde "FATAL ERROR: CALL_AND_RETRY_2 Atama başarısız - işlem belleği yetersiz" Windows'da görev yöneticisinde ~ 1.7GB bellek kullanımı. - Andreas Reiff
V7.8.0'da 8gb + kullanıyorum - sadece makinemin daha fazla RAM olmasını isteme - Joe


Artık bir bellek sızıntısı olan ve 0.6.0 düğümü 8gb'yi zorlayan Ubuntu linux üzerinde bir proc çalıştırıyorum. Düşünüyorum :).


5
2017-11-09 02:25





Gerçek gibi görünüyor. Arabellekte 50 Mb string ayırmaya çalışılınca var buf = new Buffer(50*1024*1024); Ölümcül hatam var FATAL ERROR: CALL_AND_RETRY_2 Allocation failed - process out of memory. İşlem monitöründe 457 Mb nodejs bellek kullanımı ile ilgili bir şey tespit ettim.


1
2017-08-26 15:36