iis服务器助手广告广告
返回顶部
首页 > 资讯 > 前端开发 > node.js >JS中的内存泄漏与垃圾回收机制实例分析
  • 855
分享到

JS中的内存泄漏与垃圾回收机制实例分析

2024-04-02 19:04:59 855人浏览 薄情痞子
摘要

今天小编给大家分享一下js中的内存泄漏与垃圾回收机制实例分析的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一

今天小编给大家分享一下js中的内存泄漏与垃圾回收机制实例分析的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。

JS中的内存泄漏是什么?

内存泄漏:就是用动态存储分配函数动态开辟的内存空间,使用完后没有及时回收,导致一直占据着内存单元,数量多了后就会造成内存泄漏

JS中的垃圾回收是什么?

垃圾回收机制,就是不定期的寻找到不再使用的变量,然后释放掉他们所指向的内存,防止内存泄漏

总结:垃圾回收虽然可以找到一些不再使用的局部变量回收,但是它无法对全局变量、Dom元素引用、闭包等进行回收处理,所以这也是导致内存泄漏的一个重要原因。

下面向大家介绍一下垃圾回收的两个算法

一、引用计数

IE采用的引用计数算法, 定义了“内存不再使用”这个标准,当一个对象没有其它任何变量指向它的时候,就说明这个对象以及不再被使用了,此时会进行垃圾回收释放内存空间。举个例子:

// 创建一个对象person, person指向一块内存空间, 该内存空间的引用数 +1

let person = {

age: 22,

name: 'ifcode'

}

let p = person // 两个变量指向一块内存空间, 该内存空间的引用数为 2

person = 1 // 原来的person对象被赋值为1,对象内存空间的引用数-1,

// 但因为p指向原person对象,还剩一个对于对象空间的引用, 所以对象它不会被回收

p = null // 原person对象已经没有引用,会被回收

但是引用技术有一个致命的弊端就是:无法解决循环引用的问题。

如果两个对象相互引用,及时他们已经不再使用了,垃圾回收器也不会对他们进行处理,导致内存泄漏:

 上图中对象o1与对象o2进行了循环引用,当代码执行完毕后,o1和o2未被引用就会释放掉,但是o1里面的a可以通过o1和o2.a同时访问到,此时就出现了循环引用的问题,虽然o1和o2两个对象被释放掉了,但对象里面的两个a还是互相引用的状态,浏览器会误以为这两块内存仍然被使用着,此时就造成了内存泄漏。

二、标记清除

上面讲到了因为引用技术有循环引用这个隐藏大bug,所以当下它已经不再被使用了,目前浏览器采用的垃圾回收算法是标记清除

标记清除法:将“不再使用大的对象”这个概念修改为“无法达到的对象”

就是说凡是从根部能到达的对象都还是使用的,那些无法由根部(JS全局中)出发触及到的对象被标记为不再使用,稍后进行回收。

以上就是“JS中的内存泄漏与垃圾回收机制实例分析”这篇文章的所有内容,感谢各位的阅读!相信大家阅读完这篇文章都有很大的收获,小编每天都会为大家更新不同的知识,如果还想学习更多的知识,请关注编程网node.js频道。

--结束END--

本文标题: JS中的内存泄漏与垃圾回收机制实例分析

本文链接: https://www.lsjlt.com/news/93613.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • JS中的内存泄漏与垃圾回收机制实例分析
    今天小编给大家分享一下JS中的内存泄漏与垃圾回收机制实例分析的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一...
    99+
    2024-04-02
  • js中垃圾回收机制的示例分析
    这篇文章主要介绍了js中垃圾回收机制的示例分析,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。原理找到不再被使用的变量,然后释放其占用的内存,...
    99+
    2024-04-02
  • JavaScript中垃圾回收与内存泄漏如何解决
    这期内容当中小编将会给大家带来有关JavaScript中垃圾回收与内存泄漏如何解决,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。一、垃圾回收的必要性  由于字符串、对象和...
    99+
    2024-04-02
  • php内存管理机制与垃圾回收机制的示例分析
    这篇文章给大家分享的是有关php内存管理机制与垃圾回收机制的示例分析的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。一、内存管理机制先看一段代码:<php//内存管理机制var_dump(memory_get...
    99+
    2023-06-15
  • JavaScript面试必备之垃圾回收机制和内存泄漏详解
    目录1.垃圾回收机制1.1 标记清除1.2 引用计数2.什么是内存泄漏2.1 JavaScript内存分配和回收的关键词:GC根、作用域3.常见的几种内存泄漏的方式3.1 未被注意的...
    99+
    2023-05-19
    JavaScript垃圾回收机制 JavaScript垃圾回收 JavaScript内存泄露 JavaScript面试
  • JVM中垃圾回收机制的示例分析
    这篇文章主要介绍了JVM中垃圾回收机制的示例分析,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。堆内存的划分分为三个部分(以下名词表示同一个区):新生区、新生代、年轻代养老区、...
    99+
    2023-06-29
  • PHP中垃圾回收机制的示例分析
    小编给大家分享一下PHP中垃圾回收机制的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!如果用过C语言,那么申请内存的方式是malloc或者是calloc,...
    99+
    2023-06-15
  • kubernetes中垃圾回收机制的示例分析
    这篇文章主要介绍了kubernetes中垃圾回收机制的示例分析,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。一:前言Kubernetes系统在长时间运行后,Kubernete...
    99+
    2023-06-04
  • PHP 垃圾回收机制与内存管理
    php 的内存管理使用垃圾回收机制,它会在运行时自动释放不再使用的内存,基于引用计数原理运作。为了避免内存泄漏,遵循以下最佳实践:销毁不再需要的变量、避免循环引用、使用弱引用。 PHP...
    99+
    2024-05-03
    php 垃圾回收
  • 分析Java内存管理与垃圾回收
    这篇文章主要介绍“分析Java内存管理与垃圾回收”,在日常操作中,相信很多人在分析Java内存管理与垃圾回收问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”分析Java内存管理...
    99+
    2024-04-02
  • 分析PHP的垃圾回收机制
    如果用过C语言,那么申请内存的方式是malloc或者是calloc,然后你用完这个内存后,一定不要忘了用free函数去释放掉,这就是传说中手动垃圾回收,一般都是扫地神僧用这种方式。很...
    99+
    2024-04-02
  • 深入浅析JS中的垃圾回收机制
    基本类型存放在栈中,引用类型存放在堆中。JavaScript 是在创建变量(对象,字符串等)时自动进行了分配内存,并且在不使用它们时“自动”释放。释放的过程称为垃圾回收。垃圾回收策略所有垃圾回收器都需要做的任务标记空间中活动(存活)对象和非...
    99+
    2023-05-14
    javascript 垃圾回收机制
  • 浏览器中垃圾回收机制的示例分析
    这篇文章将为大家详细讲解有关浏览器中垃圾回收机制的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。浏览器的垃圾回收机制垃圾回收是一种自动的内存管理机制。当计算机上的...
    99+
    2024-04-02
  • 详解php内存管理机制与垃圾回收机制
    目录一、内存管理机制二、垃圾回收机制一、内存管理机制 先看一段代码: <?php //内存管理机制 var_dump(memory_get_usage());//获...
    99+
    2024-04-02
  • Python的内存管理和垃圾回收机制
    本篇内容介绍了“Python的内存管理和垃圾回收机制”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!对象的内存使用赋值语句是语言最常见的功能了...
    99+
    2023-06-02
  • PHP中垃圾收集机制的示例分析
    这篇文章主要为大家展示了“PHP中垃圾收集机制的示例分析”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“PHP中垃圾收集机制的示例分析”这篇文章吧。PHP的垃圾收...
    99+
    2024-04-02
  • JS中的垃圾回收机制怎么理解
    这篇“JS中的垃圾回收机制怎么理解”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“JS中的垃圾回收机制怎么理解”文章吧。基本类...
    99+
    2023-07-05
  • C++ 函数内存分配和销毁与垃圾回收机制的比较
    c++++ 使用函数内存分配和销毁,即显式管理内存分配和释放,而垃圾回收机制自动处理这些操作,避免内存泄漏但可能降低效率。 C++ 函数内存分配与销毁与垃圾回收机制的比较 简介 内存管...
    99+
    2024-04-22
    c++ 内存管理 python 垃圾回收器
  • js中新生代垃圾回收知识点的示例分析
    这篇文章将为大家详细讲解有关js中新生代垃圾回收知识点的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。在进行老生代的标记清除法回收以前,还会有一个新生代的垃圾回收...
    99+
    2024-04-02
  • python语言开发垃圾回收机制原理的示例分析
    这篇文章主要介绍python语言开发垃圾回收机制原理的示例分析,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!一.什么是垃圾回收机制垃圾回收机制(简称GC), 解释器自带的一种机制它是一种动态存储管理技术,自动释放不再...
    99+
    2023-06-25
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作