美文网首页JavaScript
面试题 -- JS哪些操作会造成内容泄露

面试题 -- JS哪些操作会造成内容泄露

作者: 开着五菱宏光的小白 | 来源:发表于2019-04-21 14:46 被阅读0次

意外的全局变量引起的内存泄露


function leak(){
  leak="xxx";//leak成为一个全局变量,不会被回收
}

闭包引起的内存泄露

function bindEvent(){
  var obj=document.createElement("XXX");
  obj.onclick=function(){
    //Even if it's a empty function
 }

闭包可以维持函数内局部变量,使其得不到释放。 上例定义事件回调时,由于是函数内定义函数,并且内部函数--事件回调的引用外暴了,形成了闭包。
解决之道,将事件处理函数定义在外部,解除闭包,或者在定义事件处理函数的外部函数中,删除对dom的引用。

没有清理的DOM元素引用


var elements={
    button: document.getElementById("button"),
    image: document.getElementById("image"),
    text: document.getElementById("text")
};
function doStuff(){
    image.src="http://some.url/image";
    button.click():
    console.log(text.innerHTML)
}
function removeButton(){
    document.body.removeChild(document.getElementById('button'))
}

被遗忘的定时器或者回调


var someResouce=getData();
setInterval(function(){
    var node=document.getElementById('Node');
    if(node){
        node.innerHTML=JSON.stringify(someResouce)
    }
},1000)

这样的代码很常见, 如果 id 为 Node 的元素从 DOM 中移除, 该定时器仍会存在, 同时, 因为回调函数中包含对 someResource 的引用, 定时器外面的 someResource 也不会被释放。

怎么避免内存泄露

  • 减少不必要的全局变量、或者生命周期较长的对象,及时对无用的数据进行垃圾回收
  • 注意程序逻辑,避免“死循环”之类的
  • 避免创建过多的对象 原则:不用了的东西要及时归还

相关文章

  • 面试题 -- JS哪些操作会造成内容泄露

    意外的全局变量引起的内存泄露 闭包引起的内存泄露 闭包可以维持函数内局部变量,使其得不到释放。 上例定义事件回调时...

  • 2019年前端面试题-02

    JS哪些操作会造成内存泄露 JS的回收机制: 找出不再使用的变量,然后释放掉其占用的内存,但是这个过程不是实时的,...

  • 秋招十天-Day4

    面试题 null和undefined的区别? new操作符具体干了什么呢? 哪些操作会造成内存泄漏? 对Node的...

  • JS哪些操作会造成内存泄漏?

    1.背景介绍 内存泄露是指一块被分配的内存既不能使用,又不能回收,直到浏览器进程结束。在C++中,因为是手动管理内...

  • JS哪些操作会造成内存泄漏?

    大家好,我是IT修真院深圳分院第01期学员,一枚正直善良的web程序员。 今天给大家分享一下,修真院官网 js 任...

  • js有关一些简答题 - 草稿

    哪些操作会导致内存泄露? ①反复重写同一个属性会造成内存大量占用(但关闭IE后内存会被释放) ②给DOM对象用at...

  • js基础面试题

    面试题:延迟加载JS有哪些方式? 面试题:JS数据类型有哪些? 面试题:JS数据类型考题 考题一: 考题二: 面试...

  • 【IMWeb秋招训练营】【Day10】面试题总结

    经典面试题 37.哪些地方会出现css阻塞,哪些地方会出现js阻塞? js的阻塞特性所有浏览器在下载JS的时候,会...

  • Android性能优化,看完你也会了

    一 首先,我们先了解一下都有哪些性能问题 1、内存泄露。 通俗来讲,内存泄露不仅仅会造成应用内存占用过大,还会导致...

  • 哪些操作会造成内存泄?

    1)意外的全局变量引起的内存泄露 2)闭包引起的内存泄露 3)没有清理的DOM元素引用 4)被遗忘的定时器或者回调...

网友评论

    本文标题:面试题 -- JS哪些操作会造成内容泄露

    本文链接:https://www.haomeiwen.com/subject/swfjgqtx.html