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()
只会创建另一个这样的对象,而不会破坏旧对象。我对吗?