博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
PHP垃圾回收机制
阅读量:5817 次
发布时间:2019-06-18

本文共 711 字,大约阅读时间需要 2 分钟。

 

每一个php变量都存在一个叫”zval“的变量容器 中

一个zval变量容器,有4个参数,除了包含变量的类型和值,还存在is_ref和refcount着两个参数

”is_ref“是个bool值,用来标识这个变量是否属于引用集合(reference set),简单是说就是看这个变量是否被引用,引用就为true,没有被引用就为false

"refcount",用以表示指向这个zval变量容器的变量(也称符号即symbol)个数,就是说一共有多少个变量

变量容器在 ”refcount“变成 0 时就被销毁,当任何关联到某个变量容器的变量离开他的作用域(比如:函数执行结束),或者对变量调用了函数unset()时,”refcount“就会减1

数组容器 数组zval 数组有几个值有几个zval

/

在5.2版本或之前版本,

php会根据refcount值来判断是不是垃圾,如果refcount值为0,php会被当作垃圾释放掉,这种回收机制有缺陷,对于环状引用的变量是无法回收的

在5.3之后版本改进了垃圾回收机制,

如果发现一个 zval容器中refcount在增加,说明不是垃圾;

如果发现一个zval容器中的refcount在减少,如果减到了0,就是直接当垃圾回收;

如果发现一个zval容器中的refcount在减少,并没有减到0,php就会将这个值放在一个缓冲区,当作垃圾的怀疑对象。当这个缓冲区达到了临界值,php会自动调用一个方法unset(),发现垃圾就清理掉

 

我不,我要赢在明天     ----刘嘉玲《我们来了》

转载于:https://www.cnblogs.com/wzjia/p/10775264.html

你可能感兴趣的文章
vue
查看>>
玩一玩博客,嘿嘿
查看>>
P1352 没有上司的舞会
查看>>
img.onload与script.onload实现的不同写法
查看>>
ios11文件夹
查看>>
【HLOJ 559】好朋友的题
查看>>
DataSet用法3操作数据
查看>>
Electric Fence(皮克定理)
查看>>
【状压DP】【UVA11825】 Hackers' Crackdown
查看>>
nvl 在mysql中如何处理
查看>>
MyEclipse 快捷键
查看>>
快速傅里叶变换FFT
查看>>
大数据常用基本算法
查看>>
java面向对象1
查看>>
网站页面直接跳转到别的页面
查看>>
JavaScript学习笔记(十三)——生成器(generator)
查看>>
vue组件
查看>>
实例练习:购物车
查看>>
access数据库
查看>>
TP5.1 钩子与行为应用
查看>>