美文网首页
PHP垃圾回收机制

PHP垃圾回收机制

作者: Monkey_zhou | 来源:发表于2018-06-30 22:59 被阅读31次
  • PHP中的 GC

在PHP中,没有任何变量指向这个对象时,这个对象就成为垃圾;
PHP会将其在内存中销毁。这是PHP的 GC 垃圾回收机制,目的是防止内存溢出;

php 中变量在内存中是存在于一个 zval 的变量容器中。结构如下:

zval变量容器

可以使用 xdebug 来进行调试

PHP垃圾回收机制是 php5 之后才有的这个东西,php5.3 之前使用的垃圾回收机制是单纯的“引用计数”,就是每个内存对象都分配一个计数器,当内存对象被变量引用时,计数器+ 1;当变量引用撇掉后,计数器 -1 ;当计数器 =0 时,表名内存中对象没有被使用,该内存对象进行销毁,垃圾回收完成;

php5.3开始,使用了新的垃圾回收机制,在引用计数基础上,实现了一种复杂的算法,来检测内存对象中 引用环 的存在,以避免内存泄露;

PHP5和PHP7的垃圾回收机制有什么不同

PHP5和PHP7的垃圾回收机制都属于引用计数,但是在复杂数据类型的算法处理上:
在 PHP7 中 zval 有了新的实现方式。
最基础的变化就是 *zval 需要的内存不再是单独从堆上分配,不再自己存储引用计数。
复杂数据类型(比如字符串、数组和对象)的引用计数由其自身来存储

这种实现方式有以下好处:

  1. 简单数据类型不需要单独分配内存,也不需要计数;
  2. 不会再有两次计数的情况。在对象中,只有对象自身存储的计数是有效的;
  3. 由于现在计数由数值自身存储,所以也就可以和非 zval 结构的数据共享,比如 zval 和 hashtable key 之间;

相关文章

  • PHP的面试总结

    PHP的垃圾回收机制是什么? php5和php7的垃圾回收机制都是利用引用计数。 在zval结构体中定义了ref_...

  • PHP7垃圾回收机制

    前面一篇文章我们聊了下PHP5的垃圾回收机制,本篇文章再来聊下PHP7的垃圾回收机制。PHP7的速度比PHP5快了...

  • PHP基础知识

    PHP的垃圾回收机制(GC机制) 官方说明 http://docs.php.net/manual/zh/featu...

  • PHP相关

    一、 原理、流程相关 Nginx解析PHP过程 PHP执行过程 PHP垃圾回收机制 深入理解PHP Opcode缓...

  • JavaScript的垃圾回收机制

    大纲 1、认识垃圾回收机制2、垃圾回收机制的原理3、垃圾回收机制的标记策略4、垃圾回收机制与内存管理 1、认识垃圾...

  • php垃圾回收和内存管理机制

    一、PHP 垃圾回收机制(Garbage Collector 简称GC) 在PHP中,没有任何变量指向这个对象时,...

  • JS垃圾回收机制(内存问题)

    垃圾收集机制理解 垃圾收集机制:释放无用的数据,回收内存。 垃圾收集机制分类:1)自动回收 2)手动回收 垃圾收集...

  • JVM垃圾回收机制

    JVM垃圾回收 整体思维导图 带着问题理解JVM垃圾回收机制 Java为什么需要垃圾回收机制; 回收哪部分垃圾; ...

  • [转]PHP垃圾回收机制

    本文转自PHP的垃圾回收机制[https://www.cnblogs.com/xuxubaobao/p/10840...

  • PHP垃圾回收机制

    PHP垃圾回收机制 1、每一个变量定义时都保存在一个叫zval的容器里面,这里面包含了数量的类型和和值,还包含了一...

网友评论

      本文标题:PHP垃圾回收机制

      本文链接:https://www.haomeiwen.com/subject/xapxuftx.html