【发布时间】:2011-08-18 01:14:40
【问题描述】:
给定以下代码
<div id="app">
<div id="foo" />
</div>
<script>
$('#foo').bind('click', function(){});
</script>
我计划替换#app [例如$('#app').html('...'); 或 innerHTML = '...';]。我知道我可以使用 jQuery 的 .remove(),它调用一个取消绑定事件的 'destroy' 处理程序。有一个 destroy 处理程序设置来删除事件的事实让我相信,如果不解除绑定事件,当 DOM 元素被删除时,处理程序仍将存在于内存中。
那么,如果 DOM 元素 #foo 不再存在,处理程序是否也会消失,还是会丢失在浏览器内存中?
【问题讨论】:
-
我也想知道。不太确定,但我想如果 java 发现一个不再被使用的对象,它会在一段时间后清理自己。
-
@robx:JavaScript,不是 Java。是的,JavaScript 是一种垃圾收集语言,但浏览器的 DOM 部分可能不是(几乎可以肯定不是)用 JavaScript 编写的。
-
哎呀,我一直在思考自己不确定的事情;)
标签: javascript jquery memory-leaks