我的电视上有一个仪表板,页面需要每秒刷新一次。
在页面底部,我有:
function startRefresh() {
$.get('', function(data) {
var newDoc = document.open("text/html", "replace");
newDoc.write(data);
newDoc.close();
});
}
$(function() {
setTimeout(startRefresh,1000);
});
这很有效,除了每个页面加载导致内存使用量增加chrome://memory-redirect/
报告。
有没有办法解决这个问题?我不想为DIV创建一个单独的页面,只是重新加载该部分。
FYI http标头刷新和document.location = document.location
都产生了无法使用的闪烁
答案 0 :(得分:1)
如果您使用Chrome,则应使用"时间轴"记录内存使用情况。启动时间轴,然后等待页面刷新几次,然后停止时间轴并查看结果。如果你看到线路保持增加,这意味着你的内存(或DOM节点)中的对象永远不会被释放并被垃圾收集。
我自己从未使用document.open/write
所以我不知道这是否会导致垃圾收集问题,但我怀疑它是否存在。
如果您使用时间轴清楚地检测到记忆延迟,则打开"个人资料"选项卡并在页面重新加载之前和之后拍摄热门快照,然后使用"比较"看看有什么变化,你的记忆影响有多大。例如,如果您的旧编译代码(或obejct引用)仍然存在,加上新的代码,则说明您的泄漏。
答案 1 :(得分:0)
您是否尝试过location.reload()?
function startRefresh() {
location.reload();
}
$(function() {
setTimeout(startRefresh,1000);
});
编辑:在重新阅读问题之后,我意识到你并没有要求替代方法,而是对内存泄漏的解释(我没有)。