我有以下javascript代碼,要循環瀏覽我的服務器上的多個頁面(用於數字標牌)。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);
}
});
你用變量污染全局命名空間,似乎沒有太多的異步編程經驗,但我沒有看到任何明顯的東西可以解釋這種維度的內存增加。也許這是瀏覽器保持歷史和狀態(如表單)和/或圖像,......這樣的事情? (只是猜測)你有沒有監測流量,哪些文件被加載,以及它們有多沉重。 – Thomas
他們只是純html文件,幾個div,一些文本,背景顏色。真的很簡單。你是對的,我遠離一位經驗豐富的JS作家。這就是爲什麼我認爲這是我的編程中的東西。所有文件也是本地文件。總是相同的文件,在測試中有3個。 – Lonefish