PHP内存管理
2018-08-31 10:24:05 14 举报
AI智能生成
PHP内存管理,垃圾回收,内存原理等
作者其他创作
大纲/内容
PHP内存管理
写时复制
发生写时才进行深拷贝
并不是所有的value都可以复制
string
array
垃圾回收
自动内存回收的不是垃圾
循环引用的场景
垃圾回收器会把可能是垃圾的value收集起来,等达到一定数量之后才会回收
垃圾存在的类型
object
其他情况不会出现循环引用
垃圾回收期的判断依据
IS_TYPE_COLLECTABLE
疑问:标志是怎么打上去的
回收算法
垃圾由于成员引用自身导致的,对value的所有成员减1引用计数
引用计数
不是所有的类型都用引用计数
resource
reference
内存回收时机
修改变量与函数返回时,会断开指向
unset()函数
内存池
zendMM
减少内存分配及释放的次数
控制内存碎片的产生
参考tcmalloc/jemalloc重写
trunk、page、slot结构
slots
提供8,16,24,...3072等size的内存
每种size在一个或者若干个连续的page上分配
释放的内存放入对应尺寸的链表
pages
在trunk上连续分配
用bitmap标记空闲块,加速空闲块的查找
trunks
大于2M直接分配一个trunks
直接向系统要,不走malloc
0 条评论
回复 删除
下一页