PHP 变量都存储在内存中的哪个区域?
说明
以下是我对于 PHP内存 做的一些笔记,大家能否帮我看有无错误
内存区域
区域 | 存放数据 |
---|---|
栈内存 | 运行中的函数/方法,以及其中已知固定大小的变量,如整数、布尔值 |
堆内存 | 大小不固定的变量,如对象、数组等 |
代码区 | 加载类、函数等代码进来 |
全局区 | 全局变量、静态变量、常量 |
项目 | 存放区域 |
---|---|
static 修饰的方法 | 代码区 |
static 修饰的闭包 | 堆内存(因为闭包是 Closure 对象) |
static 修饰的属性 | 全局区 |
const 修饰的类属性 | 全局区 |
综上,在 swoole 使用 static 修饰闭包,不会导致内存泄露,因为无论有无 static 修饰,闭包都是存储在堆内存中的。为避免内存泄露,需要留意保存在全局区的全局变量、静态变量等