javascript释放对象_前端开发必备 - JavaScript 之 内存管理

3.内存管理

前置知识

绝大多数的程序语言,他们的内存生命周期基本一致:

64fcb79eeced22d334bec8155e9fa76c.png
  1. 分配所需使用的内存 ——(分配内存)
  2. 使用分配到的内存(读、写) ——(使用内存)
  3. 不需要时将其释放归还 ——(释放内存)

对于所有的编程语言,第二部分都是明确的。而第一和第三部分在底层语言中是明确的。

但在像JavaScript这些高级语言中,大部分都是隐含的,因为JavaScript具有自动垃圾回收机制(Garbage collected)。

因此在做JavaScript开发时,不需要关心内存的使用问题,所需内存分配和无用内存回收,都完全实现自动管理。

1.概述

像C语言这样的高级语言一般都有底层的内存管理接口,比如 malloc()和free()。另一方面,JavaScript创建变量(对象,字符串等)时分配内存,并且在不再使用它们时“自动”释放。 后一个过程称为垃圾回收。这个“自动”是混乱的根源,并让JavaScript(和其他高级语言)开发者感觉他们可以不关心内存管理。 这是错误的。 ——《MDN JavaScript 内存管理》

MDN中的介绍告诉我们,作为JavaScript开发者,还是需要去了解内存管理,虽然JavaScript已经给我们做好自动管理。

2.JavaScript内存生命周期

2.1 分配内存

在做JavaScript开发时,我们定义变量的时候,JavaScript便为我们完成了内存分配:

var num = 100; // 为数值变量分配内存var str = 'pingan'; // 为字符串变量分配内存var obj = { name : 'pingan'}; // 为对象变量及其包含的值分配内存var arr = [1, null, 'hi']; // 为数组变量及其包含的值分配内存function fun(num){ return num + 2;}; // 为函数(可调用的对象)分配内存// 函数表达式也能分配一个对象someElement.addEventListener('click', function(){ someElement.style.backgroundColor = 'blue';}, false);

另外,通过调用函数,也会分配内存:

// 类型1. 分配对象内存var date = new Date(); // 分配一个Date对象var elem = document.createElement('div'); // 分配一个DOM元素// 类型2. 分配新变量或者新对象var str1 = "pingan";var str2 = str1.substr(0, 3); // str2 是一个新的字符串var arr1 = ["hi
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值