sql >> Databasteknik >  >> NoSQL >> MongoDB

Ta bort stora Javascript-objekt när processen börjar ta slut på minne

delete i javascript används INTE för att ta bort variabler eller frigöra minne. Den används ENDAST för att ta bort en egenskap från ett objekt. Du kan hitta denna artikeldelete operatör en bra läsning.

Du kan ta bort en referens till data som finns i en variabel genom att ställa in variabeln till något som null . Om det inte finns några andra referenser till den informationen, kommer det att göra den kvalificerad för sophämtning. Om det finns andra referenser till det objektet kommer det inte att raderas från minnet förrän det inte finns fler referenser till det (t.ex. inget sätt för din kod att komma till det).

När det gäller vad som orsakar minnesackumuleringen finns det ett antal möjligheter och vi kan inte riktigt se tillräckligt med din kod för att veta vilka referenser som skulle kunna hållas på som skulle hindra GC från att frigöra saker.

Om det här är en enda långvarig process utan avbrott i körningen kan du också behöva köra sophämtaren manuellt för att se till att den får en chans att rensa upp saker som du har släppt.

Här är ett par artiklar om hur du spårar din minnesanvändning i node.js:http://dtrace.org/blogs/bmc/2012/05/05/debugging-node-js-memory-leaks/ och https://hacks.mozilla.org/2012/11/tracking-down-memory-leaks-in-node-js-a-node-js-holiday-season/ .



  1. Hur genereras MongoDB:s ObjectIds?

  2. Varför returnerar mongoosemodellens hasOwnProperty falskt när egenskapen existerar?

  3. Kan inte använda $multiply med Number

  4. Ogiltig operator '$size' i aggregering