忍者ブログ
適当に調べたことを適当に書きます。
[6] [5] [4] [3] [2] [1]
×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。


<?php
class a {
public function __construct() {
//局所変数はメソッドが終わったらメモリが解放される
$var = str_repeat("1234567890", 1024);
//メンバ変数に10KBセット
$this->var1 = str_repeat("1234567890", 1024);
//メンバ変数に10KBセット
$this->var2 = str_repeat("1234567890", 1024);

//2行目(30KB+αが増えている)
echo memory_get_usage() . "\n";

//$this->var2の値を$this->var3に参照渡し
$this->var3 =& $this->var2;
//3行目(リファレンス渡しの為メモリ使用量が少ない)
echo memory_get_usage() . "\n";

//$this->var2の値を$this->var4にコピー
$this->var4 = $this->var2;
//4行目(コピーの場合はメモリが10KB増える)
echo memory_get_usage() . "\n";
}

public function set() {
$this->var1 .= str_repeat("1234567890", 1024);
}

public function sub() {
$this->var1 = str_repeat("1234567890", 1024);
}
}

//1行目 (メモリの初期値)
echo memory_get_usage() . "\n";

//5行目 (局所変数分のメモリが解放されている)
$a = new a;
echo memory_get_usage() . "\n";

//6行目 (増やした分だけ増える)
$a->set();
echo memory_get_usage() . "\n";

//7行目(減った分だけ解放する)
$a->sub();
echo memory_get_usage() . "\n";

//8行目($this->var1のメモリが解放される)
unset($a->var1);
echo memory_get_usage() . "\n";

//9行目(var3があるためメモリは解放されない)
unset($a->var2);
echo memory_get_usage() . "\n";

//10行目(参照元がなくなった為メモリが解放される)
unset($a->var3);
echo memory_get_usage() . "\n";


出力結果:

60216
91776
91840
102144
91472
101736
91496
81240
81240
70984
PR

コメント


コメントフォーム
お名前
タイトル
文字色
メールアドレス
URL
コメント
パスワード
  Vodafone絵文字 i-mode絵文字 Ezweb絵文字


トラックバック
この記事にトラックバックする:


忍者ブログ [PR]
カレンダー
06 2025/07 08
S M T W T F S
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31
フリーエリア
最新コメント
最新トラックバック
プロフィール
性別:
非公開
バーコード
ブログ内検索