我們在實際編碼中,要想實現對內存的查看和操作,許多程序員們第一個想到的就是PHP memory_get_usage()這個PHP腳本內存函數下面是PHP memory_get_usage()使用示例:
echo memory_get_usage(), '<br />'; //143952$tmp = str_repeat('http://blog.micxp.com/', 4000);echo memory_get_usage(), '<br />'; //232048unset($tmp);echo memory_get_usage(); //143952
上面的程序后面的注釋代表了它們的輸出(單位為 byte(s)),也就是當時 PHP 腳本使用的內存(不含 memory_get_usage() 函數本身占用的內存)
由上面的例子可以看出,要想減少內存的占用,可以使用 PHP unset() 函數把不再需要使用的變量刪除。類似的還有:PHP mysql_free_result() 函數,可以清空不再需要的查詢數據庫得到的結果集,這樣也能得到更多可用內存。
PHP memory_get_usage()還可以有個參數,$real_usage,其值為布爾值。默認為 FALSE,表示得到的內存使用量不包括該函數(PHP 內存管理器)占用的內存;當設置為 TRUE 時,得到的內存為包括該函數(PHP 內存管理器)占用的內存。
所以在實際編程中,可以用PHP memory_get_usage()比較各個方法占用內存的高低,來選擇使用哪種占用內存小的方法。
常用的檢測:
用microtime函數就可以分析程序執行時間
memory_get_usage可以分析內存占用空間
再來個函數使用例子:
if (!function_exists('memory_get_usage')){/**+----------------------------------------------------------* 取得內存使用情況+----------------------------------------------------------* @return integer+----------------------------------------------------------*/function memory_get_usage(){$pid = getmypid();if (IS_WIN){exec('tasklist /FI "PID eq ' . $pid . '" /FO LIST', $output);return preg_replace('/[^0-9]/', '', $output[5]) * 1024;}else{exec("ps -eo%mem,rss,pid | grep $pid", $output);$output = explode(" ", $output[0]);return $output[1] * 1024;}}}
鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯系我們修改或刪除,多謝。
新聞熱點
疑難解答