当前位置: 首页 > 编程笔记 >

php对象在内存中的存在形式分析

章青青
2023-03-14
本文向大家介绍php对象在内存中的存在形式分析,包括了php对象在内存中的存在形式分析的使用技巧和注意事项,需要的朋友参考一下

本文实例分析了php对象在内存中的存在形式。分享给大家供大家参考。具体分析如下:

<?php
class Person{
 public $name;
 public $age;
}
$p1 = new Person();
$p1->name = "小明";
$p1->age=80;
$p2=$p1;
$p2->age=85;
echo $p2->name;
echo $p1->age;
?>

(1)$p1对应内存地址,假设是0x123,($p1和地址存放在栈区,相当于我们查字典时的索引);
(2)通过内存地址的索引,找到堆区。堆区里面存放着”小王“,”80“等数据
(3)$p2 = $p1,实际上是将$p1的内存地址0x123传给$p2,堆区里的属性$name,$age不变,也就是不会再重新复制一份。所以,在改变$p2->age=85时,$p1->age的值也改变了。

希望本文所述对大家的php程序设计有所帮助。

 类似资料:
  • 问题内容: 我只是想知道我实际上可以 将对象存储在$ _SESSION中 ,因此觉得很酷,因为当我跳到另一页时,我仍然有我的对象。现在,在我开始使用这种方法之前,我想了解一下这是否真的是一个好主意,或者是否存在 潜在的陷阱 。 我知道,如果我只有一个入口点,就不需要这样做,但是我还没有,所以我没有一个入口点,我真的很想保留我的对象,因为我没有那样不会失去我的状态。(现在,我还读过我应该对无状态站点

  • jvm的对象头是如何存储的? 对象头中有哪些信息? 对象头里面的东西:运行时元数据,类型指针:Hashcode,GC分代年龄,锁状态标志,线程持有的锁,偏向线程ID,偏向时间戳。如果是数组的化还需要记录长度 就比如下面的代码来看,内存分布情况: 由于是static的main方法所有局部变量表没有this,如果是非静态方法的话第一个放this。 其次: 栈帧:局部变量表,操作数栈,动态链接,方法返回

  • 本文向大家介绍js的数组/对象在内存中分别是如何存储的?相关面试题,主要包含被问及js的数组/对象在内存中分别是如何存储的?时的应答技巧和注意事项,需要的朋友参考一下 JavaScript的对象是以一个描述ID、一个内容指针、以及跟随该对象的属性进行储存的。 当对象构造简单时,内容指针并不起作用,而所有属性直接跟在对象的内存地址之后。 比如对象,若其内存地址为0x1000,则该对象在内存中为 0x

  • 我在运行OSX 10.13.6的Mac上有PHP版本7.2.9。如果我加载phpinfo(),我在Safari中看到memory_limit=256M。然而,当我看php.ini(/usr/本地/php5/lib/php.ini)memory_limit=128M。这种差异的原因是什么——显然限制是在其他地方设定的,但是在哪里?我需要增加内存限制

  • 本文向大家介绍对象,方法和变量在Java的内存中存储在哪里?,包括了对象,方法和变量在Java的内存中存储在哪里?的使用技巧和注意事项,需要的朋友参考一下 有五个主要内存区域,用于各种Java元素。以下是相同的列表。 类区域-该区域包含类的静态成员。 方法区域-此区域包含方法定义和可执行代码。 堆区域-该区域包含动态分配/取消分配的对象。如果某个对象不再被任何实时引用引用,则将其释放。 堆栈区域-

  • 本文向大家介绍PHP对象相互引用的内存溢出实例分析,包括了PHP对象相互引用的内存溢出实例分析的使用技巧和注意事项,需要的朋友参考一下 通常来说使用脚本语言最大的好处之一就是可利用其拥有的自动垃圾回收机制来释放内存。你不需要在使用完变量后做任何释放内存的处理,因为这些PHP会帮你完成。 当然,我们可以按自己的意愿调用 unset() 函数来释放内存,但通常不需要这么做。 不过在PHP里,至少有一种