课程咨询: 400-996-5531 / 投诉建议: 400-111-8989
认真做教育 专心促就业
随着互联网的不断发展,越来越多的人都在学习计算机编程开发的相关技术,而今天我们就通过案例分析来了解一下,JavaScript垃圾回收机制算法类型。
1、JavaScript中的内存管理
内存:由可读写单元组成,表示一片可操作空间;
管理:人为的去操作一片空间的申请、使用和释放;
内存管理:开发者主动申请空间、使用空间、释放空间;
管理流程:申请-使用-释放;
部分语言(例如C语言)需要手动去释放内存,但是会很麻烦,所以很多语言,例如JAVA都会提供自动内存管理机制,称为“垃圾回收机制”,JavaScript也提供了垃圾回收机制(GarbageCollecation),简称GC机制。
2、引用计数
早期的浏览器常使用的垃圾回收方法叫做"引用计数"(referencecounting):语言引擎有一张"引用表",保存了内存里面所有资源(通常是各种值)的引用次数。如果一个值的引用次数是0,就表示这个值不再用到了,因此可以将这块内存释放。
3、标记整理(Mark-Compact)
为了解决内存碎片化的问题,提高对内存的利用,引入了标记整理算法。
标记整理可以看做是标记清除的增强。标记阶段的操作和标记清除一致。
清除阶段会先执行整理,移动对象位置,将存活的对象移动到一边,然后再清理端边界外的内存。
标记整理的缺点是:移动对象位置,不会立即回收对象,回收的效率比较慢。
4、回收新生代对象
回收新生代对象主要采用复制算法(Scavenge算法)加标记整理算法。而Scavenge算法的具体实现,主要采用了Cheney算法。
Cheney算法将内存分为两个等大空间,使用空间为From,空闲空间为To。
检查From空间内的存活对象,若对象存活,检查对象是否符合晋升条件,若符合条件则晋升到老生代,否则将对象从From空间复制到To空间。若对象不存活,则释放不存活对象的空间。完成复制后,将From空间与To空间进行角色翻转。
【免责声明】本文系本网编辑部分转载,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。如涉及作品内容、版权和其它问题,请在30日内与管理员联系,我们会予以更改或删除相关文章,以保证您的权益!更多内容请加danei0707学习了解。欢迎关注“达内在线”参与分销,赚更多好礼。