首页 > 系统相关 >常见的js内存泄漏

常见的js内存泄漏

时间:2023-07-24 14:57:15浏览次数:34  
标签:闭包 泄漏 console 对象 js 引用 内存

1、 意外的全局变量。未被声明的变量,会被挂在window对象下,不能及时的销毁。
2、计时器和回调函数timers。定时器setInterval或者setTimeout在不需要使用的时候,没有被clear,导致定时器的回调函数及其内部依赖的变量都不能被回收,这就会造成内存泄漏。
3、DOM泄漏。
(1)给DOM对象添加的属性是一个对象的引用。解决方法:在window.onload时间中加上 document.getElementById('id').diyProp = null;
(2)元素引用没有清理。var a = document.getElementById('id'); document.body.removeChild(a); 这种操作不能回收,因为存在变量a对它的引用。虽然我们用removeChild移除了,但是还在对象里保存着#的引用,即DOM元素还在内存里面。解决方法:a = null;
(3)事件的绑定没有移除。监听事件没有移除。
4、js闭包。闭包在IE6下会造成内存泄漏,但是现在已经无须考虑了。值得注意的是闭包本身不会造成内存泄漏,但闭包过多很容易导致内存泄漏。闭包会造成对象引用的生命周期脱离当前函数的上下文,如果闭包如果使用不当,可以导致环形引用(circular reference),类似于死锁,只能避免,无法发生之后解决,即使有垃圾回收也还是会内存泄露。
5、 console日志记录。控制台日志记录对总体内存内置文件的影响,也是个重大的问题,同时也是容易被忽略的。记录错误的对象,可以将大量的数据保留在内存中。传递给console.log的对象是不能被垃圾回收,所以没有去掉console.log可能会存在内存泄漏~

标签:闭包,泄漏,console,对象,js,引用,内存
From: https://www.cnblogs.com/zha-hdlxdl/p/17577219.html

相关文章

  • 【js学习笔记五十二】weakmap的应用
     目录前言导语 代码部分前言我是歌谣我有个兄弟巅峰的时候排名c站总榜19叫前端小歌谣曾经我花了三年的时间创作了他现在我要用五年的时间超越他今天又是接近兄弟的一天人生难免坎坷大不了从头再来歌谣的意志是永恒的放弃很容易但是坚持一定很酷导语WeakuMap编辑 代码......
  • 【js学习笔记五十一】weakmap
     目录前言导语 代码部分前言我是歌谣我有个兄弟巅峰的时候排名c站总榜19叫前端小歌谣曾经我花了三年的时间创作了他现在我要用五年的时间超越他今天又是接近兄弟的一天人生难免坎坷大不了从头再来歌谣的意志是永恒的放弃很容易但是坚持一定很酷导语WeakMap编辑 代码部......
  • c++打印类的内存布局
    内存布局默认32位编译下,4字节对齐有虚函数情况下会在内存一开始多一个虚表指针普通函数不占内存空间静态成员不占内存空间1.通过cl命令输出hello.cpp中的类A的内存布局测试#输出指定类型的内存布局clhello.cpp/d1reportSingleClassLayoutA#输出所有类型的内存布局......
  • 面对对象还是基于对象傻傻分不清楚,JS这个非主流太搞了
    与其它的语言相比,JavaScript中的“对象”总是显得不那么合群。一些新人在学习JavaScript面向对象时,往往也会有疑惑:为什么JavaScript(直到ES6)有对象的概念,但是却没有像其他的语言那样,有类的概念呢;为什么在JavaScript对象里可以自由添加属性,而其他的语言却不能呢?甚至,在一些争论......
  • .net core controller获取post的json数据
    如何在.NETCoreController中获取POST的JSON数据在开发Web应用程序时,我们经常需要从客户端发送一些数据到服务器端。一种常见的方式是使用HTTP的POST方法来发送数据。在.NETCore中,我们可以使用Controller来处理这些请求,并从POST请求中获取JSON数据。创建一个.NETCoreWebAPI......
  • 在线java 实体转 json
    在线Java实体转JSON的步骤和代码示例1.简介在Java开发中,我们经常需要将Java对象转换为JSON格式,以便在网络传输或者存储过程中使用。在本文中,我将向你介绍如何在线进行Java实体转JSON的处理,并提供相应的代码示例。2.实体转JSON的步骤下面是实现在线Java实体转JSON的整个流程,通......
  • vue3.0 外部配置文件一 (导入json文件方式)
    vue3.0外部配置文件,重点是打包后也可以修改配置参数 注:js文件中必须是标准的json格式一、在public中创建static文件夹,在static文件夹中创建config.json  文件 config.json (必须是标准的json格式){"webSocketUrl":"ws://192.168.1.120:5011/chat/","......
  • JS函数调用的5种模式
    函数是经常会用的工具,这里总结一下关于在js中的5种函数调用的模式如下:<!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><metahttp-equiv="X-UA-Compatible"content="IE=edge"><metaname="v......
  • JSON化------日期类型转JSON后变为时间戳
    我们在进行对象JSON化的时候(其中包含一些日期类型字段)日期类型在进行JSON的时候会转换为时间戳解决JSON.parse(JSONObject.toJSONStringWithDateFormat(要json的值,"yyyy-MM-ddHH:mm:ss")).toString(); ......
  • 洛谷AT_jsc2019_qual_e Card Collector 题解
    题目链接CardCollector-洛谷|计算机科学教育新生态(luogu.com.cn)思路将每一行、每一列转化为点,第i行第j列的卡牌转化为i->j+m(m为行数)的有向边。总共会抽取m+n(m为行数,n为列数)张牌,每个点的出度为1。结果图为基环森林;那么题目就转化为求最大基环森林。代码1#include......