php垃圾回收新
2016-12-27 13:48
197 查看
举了这个例子,读者大概应该能够知道其中的端倪:
对于一个包含环形引用的数组,对数组中包含的每个元素的zval进行减1操作,之后如果发现数组自身的zval的refcount变成了0,那么可以判断这个数组是一个垃圾。
这个道理其实很简单,假设数组a的refcount等于m, a中有n个元素又指向a,如果m等于n,那么算法的结果是m减n,m-n=0,那么a就是垃圾,如果m>n,那么算法的结果m-n>0,所以a就不是垃圾了。
m=n代表什么? 代表a的refcount都来自数组a自身包含的zval元素,代表a之外没有任何变量指向它,代表用户代码空间中无法再访问到a所对应的zval,代表a是泄漏的内存,因此GC将a这个垃圾回收了。
对于一个包含环形引用的数组,对数组中包含的每个元素的zval进行减1操作,之后如果发现数组自身的zval的refcount变成了0,那么可以判断这个数组是一个垃圾。
这个道理其实很简单,假设数组a的refcount等于m, a中有n个元素又指向a,如果m等于n,那么算法的结果是m减n,m-n=0,那么a就是垃圾,如果m>n,那么算法的结果m-n>0,所以a就不是垃圾了。
m=n代表什么? 代表a的refcount都来自数组a自身包含的zval元素,代表a之外没有任何变量指向它,代表用户代码空间中无法再访问到a所对应的zval,代表a是泄漏的内存,因此GC将a这个垃圾回收了。
相关文章推荐
- php垃圾回收机制
- PHP 垃圾回收机制
- PHP的析构函数和垃圾回收机制
- PHP垃圾回收机制简单说明
- php垃圾回收机制
- PHP类实例教程(七):析构函数与PHP的垃圾回收
- php垃圾回收机制分析
- PHP内核探索:PHP5.3的垃圾回收机制
- 深入探讨PHP的垃圾回收机制
- 从几个简单的程序看PHP的垃圾回收机制
- PHP新的垃圾回收机制:Zend GC详解
- 关于 PHP 垃圾回收机制的一点点资料
- PHP垃圾回收机制简单说明
- PHP内核探索:新垃圾回收机制说明
- PHP垃圾回收机制
- PHP垃圾回收机制防止内存溢出
- PHP垃圾回收机制
- PHP 垃圾回收机制(转)
- PHP垃圾回收机制简单说明
- PHP的内存泄露问题与垃圾回收