PHP,赋值变量使用双内存吗?

时间:2013-06-27 10:58:35

标签: php

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

例如:

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

在这个例子中,我将使用2 x Class_That_Will_Consume_Lots_Of_Memory实例的内存占用量,还是它们中的一个和指针?

2 个答案:

答案 0 :(得分:1)

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

要获取新对象,请使用clone

相关:Are PHP5 objects passed by reference?

答案 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()调试内存使用情况。