本篇文章介绍PHP垃圾回收的机制。 php的垃圾回收机制可以简单总结为 引用计数 写时复制 COW机制, 引用计数基本知识 官网的解答如下 每个php变量存在一个叫zval的变量容器中一个zval变量容器,除了包含变量的类型和值 ,还包括两个字节的额外信息 is_ref 和
本篇文章介绍PHP垃圾回收的机制。 php的垃圾回收机制可以简单总结为 引用计数 写时复制 COW机制, 引用计数基本知识 官网的解答如下 每个php变量存在一个叫”zval”的变量容器中一个zval变量容器,除了包含变量的类型和值 ,还包括两个字节的额外信息 is_ref 和 refcount is_ref 是个bool值,用来标识这个变量是否是属于引用集合(reference set)。 通过这个字节,php引擎才能把普通变量和引用变量区分开来 refcount 用以表示指向这个zval变量容器的变量个数 PHP5 中的引用计数在PHP5中,zval 的内存是单独从堆(heap)中分配的(有少数例外情况),PHP 需要知道哪些 zval 是正在使用的,哪些是需要释放的。 所以这就需要用到引用计数:zval 中 refcount__gc 的值用于保存 zval 本身被引用的次数,比如 b = 12语句中,12 被两个变量引用,所以它的引用计数就是 2。如果引用计数变成 0,就意味着这个变量已经没有用了,内存也就可以释放了。 如下:
|
2019-06-28
2019-10-03
2019-07-04
2019-06-22
2019-02-12