我正在创建一个单页应用程序,该应用程序将在浏览器中一次保持活动状态并一次打开多个日期。在此页面上,我在右上角显示一个计时器。但是,我发现我使用计时器的方式泄漏了少量的内存。使用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