PHP垃圾回收周期--学习笔记

xiaoxiao2021-02-28  8

PHP垃圾回收周期

  前言

  1,当变量容器的引用计数增加时,该变量就不会是垃圾

  2.引用计数为0时,变量容器被删除

  3.引用计数非0时,才会触发垃圾回收周期,在一个回收周期中,检查引用技术是否减1和那些变量容器的引用次数是0,来发现那些部分是垃圾

  回收周期

  1.垃圾回收算法将所有可能的垃圾放在根缓冲区,根缓冲区满了时,才会对缓冲区内部所有不同的变量容器执行垃圾回收操作

  2.算法执行模拟删除(有可能会让引用计数减1,导致模拟删除),模拟恢复(当引用计数真的不为0时,执行模拟删除的逆运算),真的删除(引用计数为0)步骤

  PHP集成

  1.php.ini 默认开启垃圾回收机制,zend.enable_gc配置项

  2.根空间可存10000个可能根,垃圾回收机制开启,根缓存区存满时,就执行垃圾回收算法.10000的空间大小可以在PHP源码文件Zend/zend_gc.c配置GC_ROOT_BUFFER_MAX_ENTRIES,重新编译php,修改该配置.垃圾回收机制关闭时,循环算法永不执行

  3,可能根的存储不论垃圾回收机制是否开启,如果垃圾回收机制关闭,根缓冲区存满了可能根,更多的可能根就不会被记录.如果出现循环调用的情况,就会发生内存泄漏

  4.gc_enable(),开启垃圾回收机制,gc_disable(),关闭垃圾回收机制;gc_collect_cycles()会在缓冲区还没有满的时候,强制执行垃圾回收算法

转载请注明原文地址: https://www.6miu.com/read-1149995.html

最新回复(0)