2

如果我有一个大对象并将另一个变量分配给该对象,php 是创建两个对象,还是在内部使用指针?

例如:

<?php
$myObject = new Class_That_Will_Consume_Lots_Of_Memory();
$testObject = $myObject;

在此示例中,我将使用 2 xClass_That_Will_Consume_Lots_Of_Memory实例的内存占用量,还是使用其中的 1 个和一个指针?

4

2 回答 2

1

后者:一个对象和一个指针/引用(实际上,这里是两个指针/引用,因为第一个也是一个)。

要获取新对象,请使用clone.

相关:PHP5 对象是否通过引用传递?

于 2013-06-27T11:01:04.147 回答
0

PHP5 中的对象通过引用传递,数组和其他类型的传递基于 Copy on Write 技术:

$a = ['a'=>'b'];
$b = $a; // Here we used 1x memory
$b['x'] = 'y'; // Now it become 2x memory

您可以使用它memory_get_usage()来调试内存使用情况。

于 2013-06-27T11:21:12.810 回答