随着近些年硬件技术的不断发展,同时高级编程语言中又自带了GC机制,这样的一些变化就让我们在不需要特别注意内存空间使用的情况下,也能够正常的去完成相应的功能开发。那么为什么我们要在这里重提内存管理呢?
前言:内存为什么需要管理?
function fn() {
arrs = [];
arrs[10000] = 'zhangsan';
}
fn()
复制代码
执行函数之后我们发现,他的内存变化就和上图中的蓝色线条一样,持续升高并且没有回落,这就说明出现了内存泄漏。至于说如何泄漏,我们暂时不用纠结。我只是想在这说明,我们在写代码的时候不够了解内存管理的运行机制,那么我们就很有可能编写出来一些不易察觉的内存问题性代码,进而导致页面卡顿甚至崩溃。
什么是内存管理
- 内存(Memory)也被称为内存储器和主存储器,其作用是用于暂时存放CPU中的运算数据,以及与硬盘等外部存储器交换的数据。简而言之,内存由可读写的单元组成,表示一片可操作空间;
- 管理:人为的去操作一片空间的申请,使用和释放。
- 内存管理:开发者主动申请空间,使用空间,释放空间
内存生命周期
不管什么程序语言,内存生命周期基本是一致的:
- 分配你所需要的内存
- 使用分配到的内存(读、写)
- 不需要时将其释放\归还
也就是申请->使用->释放;
js中的内存管理
像C语言这样的底层语言一般都有底层的内存管理api,比如 malloc()和free()。JavaScript是在创建变量(对象,字符串等)时自动进行了分配内存,并且在不使用它们时自动释放。这个“自动”是混乱的根源,并让JavaScript(和其他高级语言)开发者错误的感觉他们可以不关心内存管理。
下面通过代码演示对于内存的申请,使用,释放
//申请空间
let obj = {}
//使用(读写操作)
obj.name = 'zhangsan'
//释放
obj =null;
复制代码
参考:
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END