浏览器内部循环引用导致的内存泄露
2008-06-17 09:50
489 查看
一.直接循环内存引用
1.自身进行引用的 DOM 对象和不在树中的对象间的循环引用
function leaktest1() { var elem1 = document.createElement("DIV"); elem1.thing = elem1; }2.不在树中的 DOM 对象间的循环引用
function leaktest2() { var elem1 = document.createElement("DIV"); var elem2 = document.createElement("DIV"); elem1.thing = elem2; elem2.item = elem1; }3.DOM 对象和 JScript 对象间的循环引用
function leaktest3() { var x = new Object(); x.obj = document.createElement("DIV"); x.obj.jsobj = x; }4.在临时标记中时 DOM 对象间的循环引用
function leaktest4() { var elem1 = document.createElement("DIV"); var elem2 = document.createElement("DIV"); elem1.appendChild(elem2); elem1.thing = elem2; elem2.item = elem1; }5.使用 removeNode 将 DOM 对象从树中删除时,DOM 对象间的循环引用
function leaktest5() { var elem1 = document.createElement("DIV"); document.body.appendChild(elem1); elem1.thing = elem1; elem1.removeNode(true); }6.使用 innerHTML 将 DOM 对象从树中删除时,DOM 对象间的循环引用
function leaktest6() { var elem1 = document.createElement("DIV"); document.body.appendChild(elem1); elem1.thing = elem1; elem1.parentElement.innerHTML = ""; }
二.闭包引起的循环内存引用
1.带有动态创建的元素的闭包
function leaktest7() { var elem = document.createElement("DIV"); elem.onload = function (){ var y = elem; } }2.带有添加到树中并使用 removeNode 删除的元素的闭包
function leaktest8(){ var elem = document.createElement("DIV"); document.body.appendChild(elem); elem.onload = function () { var y = elem; } elem.removeNode(); }3.带有添加到树中并使用 innerHTML 删除的元素的闭包
function leaktest9() { var elem = document.createElement("DIV"); document.body.appendChild(elem); elem.onload = function () { var y = elem; } elem.parentElement.innerHTML = ""; }
相关文章推荐
- 解除dom循环引用导致的内存泄露
- ios开发之使用block引发循环引用导致内存泄露
- 循环引用导致内存泄露 dealloc无法调用
- 内存泄露(包含循环引用)和野指针(僵尸对象)
- iPhone开发资料之内存管理 ,循环引用导致的内存问题
- [ Javascript ] 内存泄露以及循环引用解析
- iOS开发内存优化之自动检测内存泄露,检查是否有循环引用,检查内存为何如此大,Block循环引用的检查
- [ Javascript ] 内存泄露以及循环引用解析
- Block 内部使用self 如何防止内存循环引用
- NSTimer 增加引用计数, 导致内存泄露,
- weak_ptr 弱引用打破智能指针中循环引用造成的内存泄露
- Unity中由引用导致的内存泄露由弱引用解决
- Swift - 内存泄露原因(循环强引用)及解决办法
- 使用gc、objgraph干掉python内存泄露与循环引用!
- 循环引用导致内存泄漏
- __strong 修饰符内存分析及循环引用带来的内存泄露
- iOS开发内存优化之自动检测内存泄露,检查是否有循环引用,检查内存为何如此大,Block循环引用的检查
- 使Handler内部类不导致内存泄露的解决方法
- memset函数导致内存泄露的问题
- ios block 导致的循环引用