Yanıtlar:
node-memwatch : Node.JS kodundaki bellek sızıntılarını tespit edin ve bulun. Node.js'de Bellek Sızıntılarını İzleme Bu eğiticiye göz atın
Yerleşik işlem modülü, memoryUsagemevcut Node.js işleminin bellek kullanımı hakkında fikir veren bir yönteme sahiptir . 64 bitlik bir sistemde Node v0.12.2'den bir örnek:
$ node --expose-gc
> process.memoryUsage(); // Initial usage
{ rss: 19853312, heapTotal: 9751808, heapUsed: 4535648 }
> gc(); // Force a GC for the baseline.
undefined
> process.memoryUsage(); // Baseline memory usage.
{ rss: 22269952, heapTotal: 11803648, heapUsed: 4530208 }
> var a = new Array(1e7); // Allocate memory for 10m items in an array
undefined
> process.memoryUsage(); // Memory after allocating so many items
{ rss: 102535168, heapTotal: 91823104, heapUsed: 85246576 }
> a = null; // Allow the array to be garbage-collected
null
> gc(); // Force GC (requires node --expose-gc)
undefined
> process.memoryUsage(); // Memory usage after GC
{ rss: 23293952, heapTotal: 11803648, heapUsed: 4528072 }
> process.memoryUsage(); // Memory usage after idling
{ rss: 23293952, heapTotal: 11803648, heapUsed: 4753376 }
Bu basit örnekte, tüketicilere yaklaşık 80MB 10 milyon öğe ayırmanın olduğunu görebilirsiniz (bir göz atın heapUsed).
Eğer V8 'kaynak koduna baktığımızda ( Array::New, Heap::AllocateRawFixedArray, FixedArray::SizeFor), o zaman bir dizi tarafından kullanılan bellek bir işaretçi büyüklüğü ile çarpılarak sabit bir değer artı uzunluğu olduğunu göreceksiniz. İkincisi, 64 bitlik bir sistemde 8 bayttır, bu da 8 x 10 = 80 MB'lik gözlenen bellek farkının anlamlı olduğunu doğrular.
--expose-gciçin gcfonksiyonun?
--expose-gciçin process.memoryUsage(). gc()(gerektiren --expose-gc), process.memoryUsageraporların ne olduğunu görmeyi kolaylaştırmak için çöp toplamayı belirleyici olarak tetiklemek için yanıtta kullanılmıştır .
Ayrıca, düğüm süreci yerine genel belleği bilmek istiyorsanız ':
var os = require('os');
os.freemem();
os.totalmem();
Orijinal memwatch aslında öldü. Bunun yerine memwatch-next'i deneyin ; bu, Node'un modern sürümlerinde iyi çalışıyor gibi görünüyor.
Linux / Unix'te (not: Mac OS bir Unix'tir), işlemleri bellek kullanımına göre sıralamak için topM ( Shift+ M) tuşunu kullanın ve tuşuna basın .
Windows'ta Görev Yöneticisini kullanın.
Applications > Utilitiesve bir Activity Monitoruygulama bulacaksınız . Bu, Görev Yöneticisinin eşdeğeridir. OS X'de de topkomut var.
htopLinux'ta top yerine kullanın . Bu daha iyi.