如果我有一个大对象并为该对象分配另一个变量,php会创建两个对象,还是内部使用指针?
例如:
<?php
$myObject = new Class_That_Will_Consume_Lots_Of_Memory();
$testObject = $myObject;
在这个例子中,我将使用2 x Class_That_Will_Consume_Lots_Of_Memory
实例的内存占用量,还是它们中的一个和指针?
答案 0 :(得分:1)
后者:一个对象和一个指针/引用(实际上,这里是两个指针/引用,因为第一个也是一个)。
要获取新对象,请使用clone
。
答案 1 :(得分: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()
调试内存使用情况。