PHP的GC机制
admin
2023-01-28 17:01:26
0

就是垃圾回收器,全称Garbage Collection。

  1. php中垃圾是如何定义的?
    准确地说,判断是否为垃圾,主要看有没有变量名指向变量容器zval,如果没有则认为是垃圾,需要释放。

  2. 5.3版本以后php是如何处理垃圾内存的?
    判断处理过程
    .如果一个zval的refcount增加,那么此zval还在使用,不属于垃圾
    .如果一个zval的refcount减少到0, 那么zval可以被释放掉,不属于垃圾
    .如果一个zval的refcount减少之后大于0,那么此zval还不能被释放,此zval可能成为一个垃圾
    就是对此zval中的每个元素进行一次refcount减1操作,操作完成之后,如果zval的refcount=0,那么这个zval就是一个垃圾

  3. 对于一个包含环形引用的数组,对数组中包含的每个元素的zval进行减1操作,之后如果发现数组自身的zval的refcount变成了0,那么可以判断这个数组是一个垃圾

  4. 优化配置:会有一个缓冲区的概念,等缓冲区满了才会一次性去给清掉。缓冲区默认可以放10,000个节点,当缓冲区满了才会清理。

  5. php.ini中设置 zend.enable_gc 项来开启或则关闭GC。gc_enable() : 开启GC gc_disable() : 关闭GC
    gc_collect_cycles() : 在节点缓冲区未满的情况下强制执行垃圾分析算法

  6. 涉及到垃圾回收的知识点
    .unset只是断开一个变量到一块内存区域的连接,同时将该内存区域的引用计数-1;内存是否回收主要还是看refount是否到0了,以及gc算法判断
    .a=null是直接将a 指向的数据结构置空,同时将其引用计数归0
    .脚本执行结束,该脚本中使用的所有内存都会被释放,不论是否有引用环

相关内容

热门资讯

今日重大通报“大唐麻将辅助器?... 家人们!今天小编来为大家解答大唐麻将透视挂怎么安装这个问题咨询软件客服徽4282891的挂在哪里买很...
【今日要闻】“炫龙炸/金/花到... 有 亲,根据资深记者爆料炫龙炸/金/花是可以开挂的,确实有挂(咨询软件无...
市值登顶仍不够 英伟达请来谷歌... 财联社1月9日讯(编辑 赵昊)英伟达即将任命谷歌云高管Alison Wagonfeld为其首席营销官...
玩家最新攻略“神皇大厅有挂吗?... 有 亲,根据资深记者爆料神皇大厅是可以开挂的,确实有挂(咨询软件无需打开...
重磅消息“家乡亲友是不是有挂?... 重磅消息“家乡亲友是不是有挂?”(太坑了果然有挂)您好,家乡亲友这个游戏其实有挂的,确实是有挂的,需...
终于懂了“玄龙二厅开挂器?”(... 家人们!今天小编来为大家解答玄龙二厅透视挂怎么安装这个问题咨询软件客服徽9784099的挂在哪里买很...
今日重磅消息“德娴麻将有没有挂... 有 亲,根据资深记者爆料德娴麻将是可以开挂的,确实有挂(咨询软件无需打开...
最新引进“皇豪众娱开挂神器?”... 家人们!今天小编来为大家解答皇豪众娱透视挂怎么安装这个问题咨询软件客服徽9752949的挂在哪里买很...
最新引进“西南互娱开挂器?”(... 网上科普关于“西南互娱有没有挂”话题很是火热,小编也是针对西南互娱作*弊开挂的方法以及开挂对应的知识...
今日重大消息“凑一桌游戏有没有... 网上科普关于“凑一桌游戏有没有挂”话题很是火热,小编也是针对凑一桌游戏作*弊开挂的方法以及开挂对应的...