目录
- 概述
- php垃圾回收流程图
- php5和php7垃圾回收上的3大区别
- php7与php5变量引用计数的对比
- php7进阶到架构师相关阅读
概述
这是关于php进阶到架构之php7性能优化学习的第四篇文章:5分钟轻松搞懂php7垃圾回收机制
- 第一篇:php7代码性能常见优化技巧
- 第二篇:PHP对象在内存中的分配
- 第三篇:5分钟轻松搞懂php7垃圾回收机制
- 第四篇:细说垃圾回收php5与php7的3大区别
php垃圾回收流程图
PHP5和PHP7的垃圾回收机制都属于引用计数和拷贝复制
php垃圾回收机制详解参考:5分钟轻松搞懂php7垃圾回收机制
php5和php7垃圾回收上的3大区别
1.php7简单数据类型不再进行引用计数。简单数据类型包含布尔,数字类型。注意不包括字符串
2.php7 zval容器不再存储引用计数,引用计数由其自身value结构来存储。
3.对于引用计数,php7有一个专门的 zend_reference 用来表示引用
php7简单数据类型不再进行引用计数代码分析:
$a = 123;
echo xdebug_debug_zval( 'a');
php5运行结果如下:
a:(refcount=1, is_ref=0),int 123
php7运行结果如下:
a:(refcount=0, is_ref=0)int 123
php5中refcount=1,php7中refcount=0,由此说明php7简单数据类型不再进行引用计数
php7与php5变量引用计数的对比
php5变量赋值等操作引用计数如图所示:
PHP 7 的计数放到了具体的 value 中,
并且 PHP 7 的有一个专门的 zend_reference 用来表示引用。
php7变量赋值等操作引用计数如图所示
php7进阶到架构师相关阅读
https://www.kancloud.cn/gofor/gofor