在我的webapp中,我根据服务器发送的页面片段创建了一些DOM元素。 任何新的片段都是在jsp页面中生成的具有唯一ID的div。webapp中可能的内存泄漏
我想使用脚本标签注册事件在这个div内的元素,这个脚本标签也作为页面片段的一部分发送。
这就是我的页面片段的样子。
<script>
$(document).ready(function() {
var myButton = $("#<unique_tab_id").find(".myButton);
myButton.click(clickFunction);
function clickFunction() {
}
});
</script>
<div id="<unique_tab_id">
<button class="myButton">
My Button
</button>
</div>
随着时间的推移,几个div被添加并从页面中删除。删除基于一些用户操作,它们只是调用jQuery的replaceWith或删除函数。
添加新元素。假设jquery会自动注销它们,我不会对事件做任何事情。
我的假设是否正确? 这种编码风格会有可能的内存泄漏吗?我看到我的网页在一段时间后放缓。这是由于内存使用量的增加。我在这里泄漏记忆吗?
在$(document).ready()中定义的函数中存在闭包。但我认为一旦相应的div被删除,它们将不再有效。是对的吗? 还有什么可以泄漏记忆在这里。
如果你想在这里看到更多的细节是代码: https://github.com/C4G/V2V/blob/f4dd780ff5bf1d3b1d456d421602038500769fd9/war/WEB-INF/jsp/donors/addDonorForm.jsp
这取决于浏览器,而不是您的编程风格。请注意,当您使用Facebook并加载很多故事(并且我的意思是很多)时,您会得到相同的*减速*行为。 –