博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
谈谈垃圾回收机制方式及内存管理
阅读量:6325 次
发布时间:2019-06-22

本文共 1074 字,大约阅读时间需要 3 分钟。

回收机制方式

1、定义和用法:垃圾回收机制(GC:Garbage Collection),执行环境负责管理代码执行过程中使用的内存。

2、原理:垃圾收集器会定期(周期性)找出那些不在继续使用的变量,然后释放其内存。但是这个过程不是实时的,因为其开销比较大,所以垃圾回收器会按照固定的时间间隔周期性的执行。

3、实例如下:

function fn1() {    var obj = {name: 'hanzichi', age: 10};}function fn2() {    var obj = {name:'hanzichi', age: 10};   return obj;}var a = fn1();var b = fn2();

fn1中定义的obj为局部变量,而当调用结束后,出了fn1的环境,那么该块内存会被js引擎中的垃圾回收器自动释放;在fn2被调用的过程中,返回的对象被全局变量b所指向,所以该块内存并不会被释放。

 4、垃圾回收策略:标记清除(较为常用)和引用计数。

标记清除:

  定义和用法:当变量进入环境时,将变量标记"进入环境",当变量离开环境时,标记为:"离开环境"。某一个时刻,垃圾回收器会过滤掉环境中的变量,以及被环境变量引用的变量,剩下的就是被视为准备回收的变量。

  到目前为止,IE、Firefox、Opera、Chrome、Safari的js实现使用的都是标记清除的垃圾回收策略或类似的策略,只不过垃圾收集的时间间隔互不相同。

引用计数:

  定义和用法:引用计数是跟踪记录每个值被引用的次数。

  基本原理:就是变量的引用次数,被引用一次则加1,当这个引用计数为0时,被视为准备回收的对象。

 内存管理

1、什么时候触发垃圾回收?

垃圾回收器周期性运行,如果分配的内存非常多,那么回收工作也会很艰巨,确定垃圾回收时间间隔就变成了一个值得思考的问题。

IE6的垃圾回收是根据内存分配量运行的,当环境中的变量,对象,字符串达到一定数量时触发垃圾回收。垃圾回收器一直处于工作状态,严重影响浏览器性能。

IE7中,垃圾回收器会根据内存分配量与程序占用内存的比例进行动态调整,开始回收工作。

2、合理的GC方案:(1)、遍历所有可访问的对象; (2)、回收已不可访问的对象。

3、GC缺陷:(1)、停止响应其他操作;

4、GC优化策略:(1)、分代回收(Generation GC);(2)、增量GC

.

转载于:https://www.cnblogs.com/crazycode2/p/10504905.html

你可能感兴趣的文章
使用扩展名获取mimetype
查看>>
树中两个结点的最低公共祖先
查看>>
Cluster Table
查看>>
[置顶] 可选参数及命名实参在一起
查看>>
GSM错误代码表
查看>>
/dev/null 和 /dev/zero
查看>>
豆瓣文章:我们选择的不是工作,是生活
查看>>
IOS实现自动循环滚动广告--ScrollView的优化和封装
查看>>
微信公众平台开发(108) 微信摇一摇
查看>>
MySQL 存储过程
查看>>
UIWebView取消长按放大(用于长按识别二维码)
查看>>
实战3--应用EL表达式判断用户登录信息
查看>>
json对象的操作,json工具
查看>>
jmeter --- 测试计划里的元件
查看>>
网络编程TCP总结及实践-C语言
查看>>
[LeetCode] Combine Two Tables 联合两表
查看>>
vc维的解释
查看>>
产品需求文档(PRD)的写作方法之笔记一
查看>>
[android] WebView与Js交互
查看>>
C++ new的nothrow关键字和new_handler用法
查看>>