我正在創建一個單頁應用程序,該應用程序將在瀏覽器中一次保持活動狀態並一次打開多個日期。在此頁面上,我在右上角顯示一個計時器。但是,我發現我使用計時器的方式泄漏了少量的內存。使用jQuery.text()導致內存泄漏
https://jsfiddle.net/zbgonp84/
$(function(){
timer();
});
function timer(){
var today = new Date();
var h = today.getHours();
var m = today.getMinutes();
var s = today.getSeconds();
m = checkTime(m);
s = checkTime(s);
$("#timer").text(h + ":" + m + ":" + s);
var t = setTimeout(timer, 1000);
}
function checkTime(i) {
if (i < 10){
i = "0" + i;
}
return i;
}
我已經重新只是定時器,定時器在小提琴股利。如果您打開chrome的開發工具並記錄時間線,則可以看到每秒鐘都有一個新節點添加到內存中。如果放置24小時,它將在整個一天中每秒添加一個新節點,並且永遠不會收集。
我覺得好像我錯過了一些相當明顯的事情,爲什麼這不是被垃圾收集,但是我錯過了什麼來分配內存?
你指的是'timer'的引用和setTimeout'的使用嗎?預期的結果是什麼?您每次調用'timer'時都會調用'jQuery()'。 – guest271314
如何連接垃圾收集器?它應該收集哪些垃圾? –
您是否曾嘗試在更改'.text()'前調用'.empty()'' – Steve