php7内存分配与垃圾回收

垃圾回收

文件:zend_gc.c

引用计数方式:数据存储的物理空间增加一个计数器,其它数据相关时,计数器+1,反之-1。

定期检查计数器,计数器为0时回收物理空间

gc结构:

引用计数与写时拷贝

通过引用计数,每次引用只增加计数,不拷贝内存,在改变存储值时才进行写时拷贝

作用:减少内存浪费

只有字符串,数组,resource支持写时分离,对象、传址引用等不支持 - p79

循环引用

引用自身,导致unset自身时引用计数仍然>1

垃圾回收

垃圾收集器:将可能是垃圾的元素手机

条件:

数据类型是数组和对象

unset后引用计数大于0

垃圾回收算法:

垃圾是由于成员引用自身导致的,那么对value的所有成员减一遍引用计数,

如果发现value本身refcount变为0,则其引用来自自身,需要被回收

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容