PHP的GC机制-创新互联
就是垃圾回收器,全称Garbage Collection。
阆中网站建设公司创新互联公司,阆中网站设计制作,有大型网站制作公司丰富经验。已为阆中近1000家提供企业网站建设服务。企业网站搭建\成都外贸网站制作要多少钱,请找那个售后服务好的阆中做网站的公司定做!php中垃圾是如何定义的?
准确地说,判断是否为垃圾,主要看有没有变量名指向变量容器zval,如果没有则认为是垃圾,需要释放。5.3版本以后php是如何处理垃圾内存的?
判断处理过程
.如果一个zval的refcount增加,那么此zval还在使用,不属于垃圾
.如果一个zval的refcount减少到0, 那么zval可以被释放掉,不属于垃圾
.如果一个zval的refcount减少之后大于0,那么此zval还不能被释放,此zval可能成为一个垃圾
就是对此zval中的每个元素进行一次refcount减1操作,操作完成之后,如果zval的refcount=0,那么这个zval就是一个垃圾对于一个包含环形引用的数组,对数组中包含的每个元素的zval进行减1操作,之后如果发现数组自身的zval的refcount变成了0,那么可以判断这个数组是一个垃圾
优化配置:会有一个缓冲区的概念,等缓冲区满了才会一次性去给清掉。缓冲区默认可以放10,000个节点,当缓冲区满了才会清理。
php.ini中设置 zend.enable_gc 项来开启或则关闭GC。gc_enable() : 开启GC gc_disable() : 关闭GC
gc_collect_cycles() : 在节点缓冲区未满的情况下强制执行垃圾分析算法- 涉及到垃圾回收的知识点
.unset只是断开一个变量到一块内存区域的连接,同时将该内存区域的引用计数-1;内存是否回收主要还是看refount是否到0了,以及gc算法判断
.a=null是直接将a 指向的数据结构置空,同时将其引用计数归0
.脚本执行结束,该脚本中使用的所有内存都会被释放,不论是否有引用环
另外有需要云服务器可以了解下创新互联cdcxhl.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。
文章标题:PHP的GC机制-创新互联
网页URL:http://myzitong.com/article/dssddo.html