四时宝库

程序员的知识宝库

图说垃圾回收php5与php7的3大区别

目录

  • 概述
  • 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

最后,欢迎大家留言补充,讨论~~~

发表评论:

控制面板
您好,欢迎到访网站!
  查看权限
网站分类
最新留言
    友情链接