请问为什么会内存泄漏?<script>
document.onclick=function(){};
document.getElementById("a").doc=document;
</script>
document.onclick=function(){};
document.getElementById("a").doc=document;
</script>
解决方案 »
- 谁可以帮小妹逐句解释一下下面这段javascript代码的含义,100分赠送
- 如何在javascript里解析json数据
- 在服务器端运行javascript有什么好处?有那些功能用纯java不能实现?
- Firefox 解析外部加载js文件乱码
- jquery中的scrollTop()能控制浏览器的滚动条吗?
- 在页面内,如何显示层在页面正中,并屏蔽层后的操作。
- 散分一百,右键菜单问题.
- js,关于父子页面,关于内嵌函数,求帮助
- iframe的老问题,动态调整,那位大虾有办法,求教(内详)
- 用窗口触发事件获得每次窗口改变的宽高,使得我页面上的东西不出现滚动条,但这样会有奇怪的闪烁现象,总有滚动条大小的空白条
- 动易模板
- JS代码为什么会提示缺少对象
<html>
<body>
<div id="a"></div>
</body>
<script>
document.c=new Array();
document.getElementById("a").doc=document;
</script>
</html>确实是泄漏了,使用工具IE leaks detector看的。document无法被回收的。高手帮忙~
应该是这句吧...
document被引用后没有没有被浏览器回收
document.c=new Array();
document.getElementById("a").doc=document; 而这两句又看似不相干的。这正是疑惑所在啊。高手帮忙~
dddd.doc=document;
产生闭包了,所以就内存泄露了.闭包还不是很清晰,这样是我的结论.
var dddd=document.getElementById("a");
dddd.doc=document;
不会产生闭包吧?
另外:删除了document.c=new Array();泄漏就会消失的。-----------To:natineprince能否详细的说明一下,为何无限重复生成了C?又:无限重复生成==内存溢出?
不知道你那个泄露器怎么分析的
但如果按这思路
document.c=new Array(); //document.c成为新的Array对象
document.getElementById("a").doc=document; //document中的ID为a的HTML对象中增加自定义属性.他是document,然后重新解释document.重新定义document中的c.再重新将document中的a增加自定义属性.
倒是有点可能内泄.
另外做了如下尝试,不会泄漏:
a.doc=document;
document.c="123";//改为 document.c=new String("123") 则泄漏高手指点~----------------------------------------
下面一个典型的leak用drip也看不到的。
<div id="outerDiv"><div id="innerDiv">111111111111</div></div>
<script type="text/javascript">
function leak(){
var i=document.getElementById('innerDiv');
var b=function(){};
i.kk=b;
i.parentNode.removeChild(i);
}
leak();
</script>
document.onclick=function(){}; //dom reference the javascript object
document.getElementById("a").doc=document; //dom reference dom
</script>按照GPDE TEAM的说法,上面两句应该不会造成泄漏。
<div id="a"></div>
<script>
document.e={};
a.c=document;
</jscript>依dh20156 ,隐藏了循环引用的实际伪代码?
<div id="a"></div>
<script>
document.e=scopechain.{};
scopechain.(a).c=document;
</jscript>产生了循环引用
其实理解了JavaScript的作用域及作用域链,再来分析对象间的循环引用就很清晰了,至于写总结,暂时还没有计划,看情形吧,如果确实有需要的话,可以整理一份文档。
下面代码不漏:
<div id="a" >1</div>
<div id="b">2</div>
</body>
<script for="" e>
a.d=b;
b.c={};
</script>document有特别之处?
document.body.onclick=function(){};
document.getElementById("a").doc=document.body;
</script>