zoukankan      html  css  js  c++  java
  • JavaScript学习系列6 -- JavaScript中的垃圾回收(内存释放)

    程序开发中,涉及到的内存生命周期基本是一样的,分为以下三步

    1. 分配需要的内存

    2. 使用分配到的内存

    3. 释放其内存    ----什么时候释放内存,以及需要释放哪些变量的内存, 就是垃圾回收机制的事情了.

    JavaScript有自带的垃圾收集器,它负责跟踪内存的分配和使用,当发现已经分配的内存不再使用时,就负责自动释放它.

    JavaScript的垃圾收集器会按照固定的时间间隔, 或者代码执行过程中预定的收集时间,周期性的来执行这一操作.

     JavaScript中,局部变量的作用范围是函数内部,也就是说,只在函数执行过程中存在。这对于JavaScript的垃圾收集器而言,是比较容易判断的,所以一般不会有大问题.

    但是对于全局变量呢, 我们可以在代码中通过人为设置来保证它被垃圾回收,当它不再使用时。 一旦它不再被使用,我们可以在代码中设置其值为null来释放其引用. 这种做法我们称为 解除引用 (dereferencing) , 针对全局变量和全局对象的属性,我们都可以采取这种方式

    下面是一个例子

    function createCourse(courseName){
    
        var myCourse = new Object();
        myCourse.name = courseName;
        return myCourse;
    }
    
    var newCourse = createCourse("history");
    newCourse = null;

    上面的代码中,

    var newCourse = createCourse("history");  将会为这个新变量 newCourse分配内存, 而newCourse = null; 则是解除了newCourse的引用,这里解除了变量newCourse的引用,并不代表执行这个语句,JavaScript的垃圾回收机制就马上自动回收了newCourse的内存。 而是说让JavaScript的
    回收机制知道这个变量newCourse以及没有任何引用了,处于可以回收的状态,当JavaScript的垃圾回收器下次运行时,就会据此自动将其回收。而不是发生在执行这个语句时就马上回收。
  • 相关阅读:
    Python之字典
    Python之模块
    Python之字符串格式化
    结束循环
    循环
    C语言static和局部变量
    C static extern和全局变量
    extern static和函数
    C语言typedef
    C语言之文件包含
  • 原文地址:https://www.cnblogs.com/wphl-27/p/9668118.html
Copyright © 2011-2022 走看看