zoukankan      html  css  js  c++  java
  • js垃圾回收机制

    1.概述

     js的垃圾回收机制是为了防止内存泄漏(已经不需要的某一块内存还一直存在着),垃圾回收机制就是不停歇的寻找这些不再使用的变量,并且释放掉它所指向的内存。

    在JS中,JS的执行环境会负责管理代码执行过程中使用的内存。

    2.变量的生命周期

     当一个变量的生命周期结束之后,它所指向的内存就会被释放。。。js有两种变量,局部变量和全局变量,局部变量是在他当前的函数中产生作用,当该函数结束之后,该变量内存会被释放,全局变量的话会一直存在,直到浏览器关闭为止。

    3.js垃圾回收方式

     有两种方式: 标记清除、引用计数

     标记清除:大部分浏览器使用这种垃圾回收,当变量进入执行环境(声明变量)的时候,垃圾回收器将该变量进行了标记,当该变量离开环境的时候,将其再度标记,随之进行删除。

     引用计数:这种方式常常会引起内存的泄露,主要存在于低版本的浏览器。它的机制就是跟踪某一个值得引用次数,当声明一个变量并且将一个引用类型赋值给变量得时候引用次数加1,当这个变量指向其他一个时引用次数减1,当为0时出发回收机制进行回收。

    这种方法不能解决循环引用的情况,

    function sample(){
        var a={};
        var b={};
        a.prop = b;
        b.prop = a;
    }

    这种情况下每次调用sample()函数的时候a和b都被引用了两次,每次减少1  所以永远不会成为0,即永远不会被垃圾回收机制回收释放,造成内存的泄露。

  • 相关阅读:
    leetcode 131. Palindrome Partitioning
    leetcode 526. Beautiful Arrangement
    poj 1852 Ants
    leetcode 1219. Path with Maximum Gold
    leetcode 66. Plus One
    leetcode 43. Multiply Strings
    pytorch中torch.narrow()函数
    pytorch中的torch.repeat()函数与numpy.tile()
    leetcode 1051. Height Checker
    leetcode 561. Array Partition I
  • 原文地址:https://www.cnblogs.com/zzgyq/p/11175031.html
Copyright © 2011-2022 走看看