0
我在其中一個程序中使用了以下代碼。它將服務器推送到HTML前端。這段JavaScript代碼是否導致內存泄漏?
一切按預期工作,但經過一段時間的工作(幾天),瀏覽器吃掉所有的內存,並且計算機掛起並需要重新啓動。
是否有可能我的代碼泄漏內存,或者問題出在瀏覽器中?我知道這是可能的壞JavaScript代碼在某些情況下,內存泄漏和,只要我的JS技能是接近零...
代碼本身:
var keepAliveTimer = null;
function gotActivity() {
if (keepAliveTimer != null) clearTimeout(keepAliveTimer);
keepAliveTimer = setTimeout(connect, 3000);
}
function connect(){
gotActivity();
var source = new EventSource('/Events?');
source.onmessage =
function (event) {
var N = event.data.split("=");
var K=N.shift();
var H = "";
for (var i=0; i<N.length; i++) {
if (i>0) {H += "="};
H += N[i];
};
var el = document.getElementById(K);
if (el.hasAttribute("value")) {
el.value = H;
} else {
el.innerHTML = H;
};
};
};
connect();
此保持有效定時器機制建議在this answer。
EDIT1:再次讀取源文件。當創建的EventSource
對象被釋放?根據我的理解,從connect()
退出source
變量將被銷燬,並且EventSource對象將永遠存在。下一次撥打connect()
只會創建另一個這樣的對象,而不會破壞舊對象。我對嗎?