3

以下のコードを参照してください。

class A {
    public x = 5;
    public y = 6;
    public z = 7;
}

class B extends A {
    public m = 1;
    public n = 2;
}

$a = new A();
$b = new B()

上記のコードから、$ ax量のメモリを割り当て、 $by量のメモリを割り当てているとします。

さて、私の質問は、以下からどれが正しいかということです。

x> y

x <y

4

3 に答える 3

7

これらは私の番号です:

Starting allocation 62480
Allocated memory for new A() 328
Allocated memory for new B() 496

したがってx < y

これらの2つのクラス定義は同等です

class B extends A {
    public $m = 1;
    public $n = 2;
}

class C {
    public $x = 5;
    public $y = 6;
    public $z = 7;
    public $m = 1;
    public $n = 2;
}

つまり、Bの定義をCの定義に変更すると、メモリ使用量は、新しいB()または新しいC()を使用した場合とまったく同じになります。

自分で実行するには、このコードを使用します(例として)

$start = memory_get_usage();
echo "Starting allocation $start\n";
$a = new A();
$diff = memory_get_usage() - $start;
echo "Allocated memory for new A() $diff\n";
$b = new B();
$diff = memory_get_usage() - $start - $diff;
echo "Allocated memory for new B() $diff\n";
于 2009-12-14T08:29:15.070 に答える
3

これは、 memory_get_usage関数を使用して調べることができます。

于 2009-12-14T08:27:54.090 に答える
1

パブリック$x、$ y、$zである必要があります。

また、$ bは、内部にAのインスタンスがあるため、より多くのメモリを消費します。

于 2009-12-14T08:27:26.043 に答える