PHP的垃圾回收机制是如何实现和优化的?
- 内容介绍
- 文章标签
- 相关推荐
本文共计2163个文字,预计阅读时间需要9分钟。
目录
一、引用计数基础知识
二、创建zval容器
三、增加zval的引用计数
四、减少zval的引用计数
五、复合类型的zval容器
六、增加复合类型的引用计数
七、减少复合类型的引用计数
八、特殊操作
目录
- 一、引用计数基础知识
- 二、生成zval容器
- 三、增加zval的引用计数
- 四、减少zval引用计数
- 五、复合类型的zval容器
- 六、增加复合类型的引用计数
- 七、减少复合类型的引用计数
- 八、特殊情况
- 九、清理变量容器的问题
- 十、回收周期
- 十一、回收算法分析
- 十二、性能考虑
- 十三、垃圾回收机制的结论
一、引用计数基础知识
- 每个php变量存在一个叫 zval 的变量容器中。
- 一个 zval 变量容器,除了包含变量的类型和值,还包括两个字节的额外信息。
- 第一个是 is_ref,是个bool值,用来标识这个变量是否是属于引用集合。通过这个字节,php引擎才能把普通变量和引用变量区分开来,由于php允许用户通过使用&来使用自定义引用,zval变量容器中还有一个内部引用计数机制,来优化内存使用。
- 第二个额外字节是 refcount,用以表示指向这个zval变量容器的变量个数。
本文共计2163个文字,预计阅读时间需要9分钟。
目录
一、引用计数基础知识
二、创建zval容器
三、增加zval的引用计数
四、减少zval的引用计数
五、复合类型的zval容器
六、增加复合类型的引用计数
七、减少复合类型的引用计数
八、特殊操作
目录
- 一、引用计数基础知识
- 二、生成zval容器
- 三、增加zval的引用计数
- 四、减少zval引用计数
- 五、复合类型的zval容器
- 六、增加复合类型的引用计数
- 七、减少复合类型的引用计数
- 八、特殊情况
- 九、清理变量容器的问题
- 十、回收周期
- 十一、回收算法分析
- 十二、性能考虑
- 十三、垃圾回收机制的结论
一、引用计数基础知识
- 每个php变量存在一个叫 zval 的变量容器中。
- 一个 zval 变量容器,除了包含变量的类型和值,还包括两个字节的额外信息。
- 第一个是 is_ref,是个bool值,用来标识这个变量是否是属于引用集合。通过这个字节,php引擎才能把普通变量和引用变量区分开来,由于php允许用户通过使用&来使用自定义引用,zval变量容器中还有一个内部引用计数机制,来优化内存使用。
- 第二个额外字节是 refcount,用以表示指向这个zval变量容器的变量个数。

