将类的实例分配给另一个类的成员变量会增加内存占用量

问题描述 投票:0回答:1

示例:

<?php

class MyClass {

  private $data = array(// large amount of data);

  public function getData() {
    return $this->data;
  }

}

class MyOtherClass {
  private $var;

  public function __construct($other_class_instance) {
    $this->var = $other_class_instance;
  }
}

$my_class = new MyClass();

$other_class_1 = new MyOtherClass($my_class);
$other_class_2 = new MyOtherClass($my_class);

上面的代码将是MyClass->数据的〜3倍还是仅是1x,因为它是通过引用传递的?

php oop memory memory-management hacklang
1个回答
0
投票

不会为$my_class实例分配新的内存。

MyOtherClass::$var不保存$my_class的独立存储器表示,而只是保存对象标识符引用。

因此每个new MyOtherClass($my_class);只会添加字节以将特定实例存储在内存中,而不会为$my_class的副本添加额外的内存。

© www.soinside.com 2019 - 2024. All rights reserved.