我在代码中发现内存泄漏,看起来像下一个代码段
function random() { return Math.floor(Math.random() * 1000); } var _target = $('#target'); function add() { _target.empty(); for (var i = 0; i < 100; i++) { _target.append('<tr><td>'+random()+'</td><td>'+random()+'</td><td>'+random()+'</td></tr>') } } var addInt = setInterval(add,500);
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Memory leak test: jquery</title> <script src="//cdnjs.cloudflare.com/ajax/libs/jquery/3.1.1/jquery.min.js" type="text/javascript"></script> </head> <body> <table id="target"></table> </body> </html>
innerHTML编写的相同代码不会导致内存泄漏.
Chrome 57.0.2987.133(64位)中包含此代码的标签已从37 Mb增加到161 Mb.
如果我们在代码中使用任何这些方法,则存在问题:
> .html();
> .append();
> .appendTo();
> .prependTo();
> .prepend();
解决方法
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。