delete
в javascript НЕ се използва за изтриване на променливи или освобождаване на памет. Използва се САМО за премахване на свойство от обект. Може да намерите тази статия
на delete
оператор добро четене.
Можете да премахнете препратка към данните, съхранявани в променлива, като зададете променливата на нещо като null
. Ако няма други препратки към тези данни, това ще ги направи допустими за събиране на боклук. Ако има други препратки към този обект, той няма да бъде изчистен от паметта, докато няма повече препратки към него (напр. няма начин вашият код да стигне до него).
Що се отнася до това, което причинява натрупването на памет, има редица възможности и ние не можем да видим достатъчно от вашия код, за да знаем какви препратки могат да бъдат задържани, които биха попречили на GC да освободи неща.
Ако това е единичен, дълго работещ процес без прекъсвания в изпълнението, може също да се наложи да стартирате ръчно събирача на отпадъци, за да се уверите, че получава шанс да изчисти нещата, които сте освободили.
Ето няколко статии за проследяване на използването на вашата памет в node.js:http://dtrace.org/blogs/bmc/2012/05/05/debugging-node-js-memory-leaks/ и https://hacks.mozilla.org/2012/11/tracking-down-memory-leaks-in-node-js-a-node-js-holiday-season/ .