Memory 如何防止IE Mobile中的内存泄漏?

Memory 如何防止IE Mobile中的内存泄漏?,memory,mobile,internet-explorer,memory-leaks,gears,Memory,Mobile,Internet Explorer,Memory Leaks,Gears,我已经编写了一个应用程序,可以在使用IE Mobile的设备上脱机使用(与Google Gears一起)。这些设备正在经历内存泄漏,其速度会随着时间的推移而变得不可用 问题页面从本地Gears数据库获取条目,并呈现每个条目的表,在每行的最后一列中有一个链接以打开条目(该链接仅为onclick=“open('myID'))。处理完条目后,它们返回到表中,然后重新呈现该表。这张桌子的重复建造似乎是问题所在。主要是onclick事件 表的生成基本上如下所示: var tmp=""; for (var

我已经编写了一个应用程序,可以在使用IE Mobile的设备上脱机使用(与Google Gears一起)。这些设备正在经历内存泄漏,其速度会随着时间的推移而变得不可用

问题页面从本地Gears数据库获取条目,并呈现每个条目的表,在每行的最后一列中有一个链接以打开条目(该链接仅为onclick=“open('myID'))。处理完条目后,它们返回到表中,然后重新呈现该表。这张桌子的重复建造似乎是问题所在。主要是onclick事件

表的生成基本上如下所示:

var tmp="";
for (var i=0; i<100; i++){
 tmp+="<tr><td>row "+i+"</td><td><a href=\"#\" id=\"LINK-"+i+"\""+
  " onclick=\"afunction();return false;\">link</a></td></tr>";
}

document.getElementById('view').innerHTML = "<table>"+tmp+"</table>";
function afunction(){
 document.getElementById('view').style.display="none";
}
这是否构成一种循环引用


Jake

我不知道它是否有助于提高内存,但您可以将字符串推送到一个数组中,并将它们连接起来以获得更好的性能,而不是将字符串连接起来。比如:

var tmp=[];
for (var i=0; i<100; i++){
 tmp.push("<tr><td>row "+i+"</td><td><a href=\"#\" id=\"LINK-"+i+"\""+
  " onclick=\"afunction();return false;\">link</a></td></tr>");
}

document.getElementById('view').innerHTML = "<table>"+tmp.join('')+"</table>";
var tmp=[];

对于(var i=0;i我不知道它是否有助于内存,但您可以将字符串推送到一个数组中,并将它们连接起来以获得更好的性能,而不是连接字符串。例如:

var tmp=[];
for (var i=0; i<100; i++){
 tmp.push("<tr><td>row "+i+"</td><td><a href=\"#\" id=\"LINK-"+i+"\""+
  " onclick=\"afunction();return false;\">link</a></td></tr>");
}

document.getElementById('view').innerHTML = "<table>"+tmp.join('')+"</table>";
var tmp=[];

对于(var i=0;i如果您正在编写大量脚本来更改页面内容,那么在我过去使用的一本旧AJAX书籍中提到了IE内存泄漏(这很可能会影响您的此处)。卸载页面时,您需要清除所有已更改的div/span/等,否则其内容将保留在内存中。请尝试以下操作:

<script type="text/javascript">
window.onunload = clearAJAXContent;

function clearAJAXContent() {
/* clear any dynamic content placeholders here*/
}
</script>

window.onunload=clearAJAXContent;
函数clearAJAXContent(){
/*清除此处的任何动态内容占位符*/
}

我相信,在清除时,您希望将innerHTML设置为“”.下一次回家后,我会试图找到这本书,如果有什么不同,我会更新我的答案,但这应该会给你一些测试的东西,同时

如果你正在做大量改变页面内容的脚本,我在过去使用过的一本旧AJAX书中提到了IE内存泄漏(这很可能会影响您的此处)。卸载页面时,您需要清除所有已更改的div/span/等,否则其内容将保留在内存中。请尝试以下操作

<script type="text/javascript">
window.onunload = clearAJAXContent;

function clearAJAXContent() {
/* clear any dynamic content placeholders here*/
}
</script>

window.onunload=clearAJAXContent;
函数clearAJAXContent(){
/*清除此处的任何动态内容占位符*/
}

我相信,在清除时,您希望将innerHTML设置为“”。下次回家后,如果有任何不同,我将尝试查找该书并更新我的答案,但这应该会给您一些测试,同时回来?关闭浏览器完全释放内存。执行“软关闭”在重新打开时提高性能,但不会释放内存。该设备是XDA Orbit 2。返回?关闭浏览器完全释放内存。执行“软关闭”当您重新打开它时,它会提高性能,但不会释放内存。该设备是XDA Orbit 2。这是一个很好的提示,但您的示例仍然包含很多字符串。这是一个很好的提示,但您的示例仍然包含很多字符串。