<body>
<div id="bb">
<div id="aa">
cc</div>
</div>
<script type="text/javascript">
function leakTest() {
var a = []; //用来加大闭包资源占用,方便观察
for (var i = 0; i < 100000; i++) {
a.push('a');
}
var bbcc = new Object();
var divA = document.getElementById('aa');
divA.kk = function() { };
divA.parentNode.removeChild(divA);
}
leakTest();
</script>
</body>divA.kk = function() { };函数中并没有引用外部变量,这是否是个闭包?
<div id="bb">
<div id="aa">
cc</div>
</div>
<script type="text/javascript">
function leakTest() {
var a = []; //用来加大闭包资源占用,方便观察
for (var i = 0; i < 100000; i++) {
a.push('a');
}
var bbcc = new Object();
var divA = document.getElementById('aa');
divA.kk = function() { };
divA.parentNode.removeChild(divA);
}
leakTest();
</script>
</body>divA.kk = function() { };函数中并没有引用外部变量,这是否是个闭包?
解决方案 »
- Js匹配字符?????
- js的问题
- js 如何打开本地word程序 word文档也是本地.不是在浏览器中打开
- JAVAScript与Flash冲突
- 服务器被别人攻击,请教如何找出漏洞。
- 高手来帮忙啦,如何点删除后把后面的文本框的值传到前面去,或者将后面的删除按钮的值重写??
- 怎样在客户端打开文件另存为的对话框?
- 如何使<input type=text readonly=true>
- 帮帮啊,各位高手
- 向各位请教一个菜鸟问题(急用)——有分送
- 各们我遇到一个问题,我不会写,就是<input>type=text中输入的数字超过20就给一个提示,代码怎么写啊
- 如何让jQuery.getScript加载的js只在局部有用
divA.kk = function() { };
divA.parentNode.removeChild(divA);第三行代码中,你已经把divA从HTML中移除了,但你的第二行仍然保存着对divA的引用,这里内存泄漏了divA.kk=null;
divA=null;即可
漏洞应该不大吧。
毕竟当function leakTest(){};
执行完毕后 divA 就离开作用域了,
js 拉圾 机制 自动回收 divA 了。
var divA = document.getElementById('aa');
divA.kk = function() { };
divA.parentNode.removeChild(divA);
“但你的第二行仍然保存着对divA的引用”,第二行怎么产生的divA的引用?
可是 好123 更加严重。 是你的2倍多。5.几Mb内存是漏了,
可不知漏哪里去了。
我用firefox
打开你代码那一页
刷
刷
......
从91 Mb
慢慢加到 98Mb
再次刷。
又变回 91 Mb
,
可见,不是页面有内存泄漏。
就算是,也没有危险!