php执行的内存分配理解

115 阅读1分钟

首先我们先来了解下php在内存中表示中的几种方式

1.初始化静态常量段:是用来放程序中已初始化且不为0的全局变量如静态变量和常量
2.代码段:通常是指用来存放程序执行代码内存区域,比如函数和方法
3.栈:用来存储占用相同空间长度并且占用空间小的数据类型的地方,比如说整型1,10,100,1000,10000,100000 等等,在内存里面占用空间是等长的,都是64 位4 个字节。
4.堆:数据长度不定长,而且占有空间很大的数据类型的数据
5.输出缓存:只要遇到输出命令(如echo,print,print_r,var_dump等),数据会缓存在这个区域

1319779-20180606151750206-889736825.png

执行过程

php代码编译过后,会将编译好的代码保存在"代码段" 中,在执行代码中的机器命令,这时如果有一些已经定义好的变量和常量放在"栈",如果是一些new 变量 需要动态申请内存的操作会在"堆"如果有遇到输出命令时,再缓存在输出缓存区

1319779-20180606153635427-1771322168.png