php7内存分配与垃圾回收

2019-06-17  本文已影响0人  转过

垃圾回收

文件:zend_gc.c

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

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

gc结构:

引用计数与写时拷贝

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

作用:减少内存浪费

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

循环引用

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

垃圾回收

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

条件:

数据类型是数组和对象

unset后引用计数大于0

垃圾回收算法:

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

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

上一篇下一篇

猜你喜欢

热点阅读