var gg = false;
var check = false;
function send_request(url){
if(window.XMLHttpRequest){
gg = new XMLHttpRequest();
}
else if(window.ActiveXObject){
try{
gg = new ActiveXObject("Msxml2.XMLHTTP");
}catch(e){
try{
gg = new ActiveXObject("Microsoft.XMLHTTP");
}catch(e){}
}
}
if(!gg){
window.alert("不能创建");
}
gg.onreadystatechange=processRequest;
gg.open("POST",url,true);
gg.send(null);
}
function processRequest(){
if(gg.readyState == 4){
if(gg.status == 200){
document.getElementById("label1").value=gg.responseText;
}
}
} function update(){
var user = form1.user.value;
if(user==""){
form1.user.focus();
}
else{
var url = "jsp.jsp?user="+user;
url = encodeURI(url);
url = encodeURI(url);
send_request(url);
}
form1.user.value="";
form1.user.focus();
}
function chat(){
var user =1;
var url = "jsp.jsp?user=1";
send_request(url);
setInterval("chat()",2000);

}
window.onload=chat();

解决方案 »

  1.   

    你用的是setInterval("chat()",2000);
    首先你了解setInterval和setTimeout的区别:
    setInterval(表达式,时间):页面载入后,每经过指定毫秒值后执行指定表达式,是间隔多次执行的
    setTimeout(表达式,时间):页面载入后,经过指定毫秒值后执行指定表达式,只执行一次
    看了这个你知道你为什么会内存溢出了吧,最好是用setTimeout,用完后最好是还要关掉setInterval对应的是clearInterval,setTimeout对应的是clearTimeout
      

  2.   

    function chat(){
       var user =1;
       var url = "jsp.jsp?user=1";
       send_request(url);
       setInterval("chat()",2000);
                    
    }
    window.onload=chat();
    问题产生在这里
    1: 页面加载后调用chat一次.
    2: chat方法中设置了每隔2秒调用一次chat
    3: 在每隔2秒调用的chat中又重复了2
    所以, 会有内存溢出, 因为这里经过多次chat调用之后, 会形成n多独立的每隔2秒调用chat
    也就是说
    第一个2秒调用了1个chat
    第二个2秒调用了2个chat
    第三个2秒调用了4个chat
    第四个2秒调用了8个chat
    ...
    第一百个2秒调用了2^99个chat
    所以, 很多就over了
      

  3.   

    setInterval("chat()",2000);改为 setTimeout("chat()",2000);