検索

ホームページ  >  に質問  >  本文

PHPのメモリ管理についての質問です。

PHP のメモリ使用量をテストするファイルを作成しました。リリース後に変数が占有するメモリが配列とオブジェクトで異なることがわかりました。以下は PHP 7.0 CLI で実行されるコードです。モード。

配列:

<?php
関数変換($size){
    $unit=array('b','kb','mb','gb','tb','pb');
    echo @round($size/pow(1024,($i=floor(log($size,1024)))),2).$unit[$i]."\n";
}
関数 a(){
    $a = [];
    for($i=0;$i<1000000;$i++){
        $a[$i] = $i;
    }
    変換(memory_get_usage(true));
}
変換(memory_get_usage(true));
// 2M
a();
変換(memory_get_usage(true))
// 2M

出力:

<プリ><コード>2M 34M 2M

オブジェクト:

<?php
関数変換($size){
    $unit=array('b','kb','mb','gb','tb','pb');
    echo @round($size/pow(1024,($i=floor(log($size,1024)))),2).$unit[$i]."\n";
}
関数 a(){
    $a = 新しい標準クラス;
    for($i=0;$i<1000000;$i++){
        $a->$i = $i;
    }
    変換(memory_get_usage(true));
}
変換(memory_get_usage(true));
a();
Convert(memory_get_usage(true))

出力:

<プリ><コード>2M 68M 32M
给我你的怀抱给我你的怀抱2792日前447

全員に返信(2)返信します

  • 世界只因有你

    世界只因有你2017-05-16 13:13:22

    この質問は PHP のガベージ コレクション メカニズムに関するもので、私が理解していることを共有します。
    各 PHP プロセスにはルート バッファが割り当てられ、PHP データ構造へのすべての参照はバッファの上限 (通常は 10,000) に達すると、PHP のガベージ コレクション メカニズムがトリガーされます。いくつかの無効なリソースをクリーンアップします。
    ループ数を5000回に変更すると、最後の2回のメモリ値が同じになるはずです。

    返事
    0
  • 过去多啦不再A梦

    过去多啦不再A梦2017-05-16 13:13:22

    記事を読みましたので、お役に立てれば幸いです

    ガベージコレクション

    返事
    0
  • キャンセル返事