1
的JavaScript代碼:setInterval處理程序是否考慮了內存泄漏?
function blah()
{
var blahInterval = setInterval(function(){
if(some_global_variable == 5)
clearInterval(blahInterval);
}, 1000);
}
我有這樣的代碼有多個變種,它會在腳本的NodeJS被稱爲極大數倍。 clearInterval
之後我是否需要delete blahInterval;
?
這是內存泄漏嗎?或者一旦setInerval函數超出範圍,GC將清除它?
全局變量隨某些外部事件而改變,所以這個setInterval處理程序可能會執行一次或幾百次!所以問題是「什麼時候blahInterval超出範圍?」 – ItsMe
每個函數調用'blah()'創建一個本地'blahInterval'。因此,考慮到if語句相同,每個人都會在同一時間超出範圍。如果'blahInterval'是一個全局變量,我們就會遇到問題,因爲會有覆蓋時無法清除的間隔。由於它是本地的,我們沒有這個問題。 –