PHP对象在内存堆栈中的分配

参考:https://blog.csdn.net/vincent_xiaozhuang/article/details/83150586

内存从逻辑上说大体上是分为4 段,栈空间段、堆空间段、代码段、初始化静态段,程序里面不同的声明放在不同的内存段里面

数据段:静态变量,常量
代码段:函数,方法
栈内存:空间小,访问速度快,一般存储类型不变的的数据类型,int,float,bool,64位4个字节
堆内存:空间大,存储长度不固定,比较大的数据类型,string,array,class

栈内存是可以直接存取的,而堆内存是不可以直接存储的内存。

对象是存放在堆里面,而对象的名称则是存放在栈里面,这样通过对象名称就可以使用对象了。

例如:实例化三个对象,如下图,每实例一个对象就会开辟一个空间,每个对象之间是独立的,使用自己的空间,而$p1是对象的名称存放在栈内存中,相当于一个指针指向堆里面的对象,这样就可以通过$p1来操作对象。

$p1 = new Person();

$p2 = new Person();

$p3 = new Person();

 

PHP对象在内存堆栈中的分配_第1张图片

你可能感兴趣的:(php)