delete
w javascript NIE służy do usuwania zmiennych lub zwalniania pamięci. Służy TYLKO do usunięcia właściwości z obiektu. Możesz znaleźć ten artykuł
na delete
operator dobrze czytać.
Możesz usunąć odniesienie do danych przechowywanych w zmiennej, ustawiając zmienną na coś takiego jak null
. Jeśli nie ma innych odniesień do tych danych, to będzie kwalifikować się do zbierania śmieci. Jeśli istnieją inne odniesienia do tego obiektu, nie zostanie on wyczyszczony z pamięci, dopóki nie będzie już do niego odniesień (np. nie ma możliwości, aby Twój kod się do niego dostał).
Jeśli chodzi o to, co powoduje akumulację pamięci, istnieje wiele możliwości i tak naprawdę nie możemy zobaczyć wystarczająco dużo twojego kodu, aby wiedzieć, jakie referencje mogą być przechowywane, co uniemożliwiłoby GC uwolnienie rzeczy.
Jeśli jest to pojedynczy, długo działający proces bez przerw w wykonywaniu, może być konieczne ręczne uruchomienie modułu odśmiecania pamięci, aby upewnić się, że ma szansę na wyczyszczenie wydanych elementów.
Oto kilka artykułów na temat śledzenia zużycia pamięci w node.js:http://dtrace.org/blogs/bmc/2012/05/05/debugging-node-js-memory-leaks/ i https://hacks.mozilla.org/2012/11/tracking-down-memory-leaks-in-node-js-a-node-js-holiday-season/ .