gpt4 book ai didi

JavaScript 可能存在内存泄漏

转载 作者:行者123 更新时间:2023-12-03 07:42:45 25 4
gpt4 key购买 nike

我有以下 JavaScript 代码,用于循环浏览服务器上的多个页面(用于数字标牌)。

此代码在所有页面中使用,并且(目前)每 3 秒在一个页面上循环一次(请参阅超时)。但是,浏览器的内存使用量会缓慢但稳定地上升。 2 小时后,使用量从 192mb 增加到 436mb。由于这是在 Raspberry pi 上进行的,只有 512mb 专用于 cpu 的内存,因此不太实用。

这段代码中是否存在明显的内存泄漏?我自己不是专家,但由于这些东西每天运行 8-12 小时,我可能谈论的是 20 次重新加载/分钟,所以每天 +/- 9600-14400 次重新加载。如果不关闭的话还会有更多..

$(document).ready(function() {
versionPage = parseInt(document.getElementById("version").innerHTML);
versionServer = 0
urls = 0;
getVersion();
currentPage = getPage();
getContent();
main();

function getPage() {
page = window.location.href.split("/");
return page[page.length-1];
}

function getVersion() {
$.ajax({
url: "http://localhost/getVersion",
type: "GET",
dataType: "json",
success: function(json) {
console.log("json" + json);
versionServer = json;
if (versionServer != versionPage) {
console.log("Difference!");
}
else {
console.log("Same!");
}
},
});

}



//saves how much urls there are
function getContent() {
$.ajax({
url: "http://localhost/getContent",
type: "GET",
dataType: "json",
success: function(json) {
console.log(json);
urls = json;
},
});
}


//main function loop
function main() {
//check version every
window.setInterval(function() {
getVersion();
if(versionServer != versionPage) {
window.location.href = "http://localhost:5000/1"
}
if(urls != 1) {
nextPage =(parseInt(currentPage) % urls) + 1;
window.location.href = "http://localhost:5000/" + nextPage;

}
}, 3000);
}
});

最佳答案

我不得不在评论中问你这个问题,但它需要“50 声誉”才能发表评论。

您是否尝试过将代码放入外部 Javascript 文件(例如“signagelooper.js”)中并按顺序访问您的页面。这样你的循环函数总是有一个实例在运行。如果您不想这样做,请纠正我。

关于JavaScript 可能存在内存泄漏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35340468/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com