在编写Javascript程序时候,开发人员不用在关心内存使用问题,所需内存的分配一觉无用内存的回收完全实现了自动化管理。这种垃圾收集机制的原理其实很简单,找出那些不再继续使用的变量,然后释放其占用的内存。为此,垃圾回收器会周期性的执行这一操作。
垃圾回收方法:
-
标记清除
Javascript中最常用的垃圾收集方式是垃圾清除。当变量进入环境(例如,在函数中声明的一个变量)时,就将这边变量标记为“进入环境”。从逻辑上讲,永远不能释放进入环境的变量所占用的内存,因为只要执行流进入响应的环境,就可能会用到他们。而当变量离开环境时,则将其标记为“离开环境”。 -
引用计数
引用计数的含义是跟踪记录每个值被引用的次数。当声明了一个变量并将一个引用类型值赋值给变量时候,则这个值的引用次数就是1,如果同一个值又被赋给另一个变量,则该值的引用次数加1.相反,如果包含对这个值的引用的变量又取得了另一个值,则这个值的引用次数减1.当这个值的引用次数变成0时候,则说明没有办法再访问这个值了,因而就可以将其所占用的内存空间回收回来。
性能问题
如果垃圾收集回收的内存分配量低于15%,则变量、字面量和数组元素的临界值就会加倍。如果例程回收了85%的内存分配量,则将各种临界值重置回默认值。
内存泄漏问题:
对象相互引用导致
网友评论