PHPのメモリ管理についての質問です。
给我你的怀抱
给我你的怀抱 2017-05-16 13:11:22
0
2
413

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
给我你的怀抱
给我你的怀抱

全員に返信(2)
世界只因有你

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

いいねを押す +0
过去多啦不再A梦

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

ガベージコレクション

いいねを押す +0
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート