介紹如何在 PHP 中以 memory_get_usage
與 memory_get_peak_usage
函數查詢程式的記憶體使用量以及最大用量值。
記憶體用量
在 PHP 中若要查詢程式目前的記憶體使用量,可以使用 memory_get_usage
函數,它會傳會目前程式所使用的記憶體大小,單位為位元組(bytes)。
# 取得目前記憶體用量 $memoryUsage = memory_get_usage(); echo "記憶體用量:$memoryUsage 位元組\n";
我們可以使用 memory_get_usage
函數來觀察程式中各個階段的記憶體用量變化:
# 取得目前記憶體用量 $memoryUsage = memory_get_usage(); echo "記憶體用量:$memoryUsage 位元組\n"; # 建立變數 $myVar = str_repeat("Hello", 2000); # 取得目前記憶體用量 $memoryUsage = memory_get_usage(); echo "記憶體用量:$memoryUsage 位元組\n"; # 移除變數 unset($myVar); # 取得目前記憶體用量 $memoryUsage = memory_get_usage(); echo "記憶體用量:$memoryUsage 位元組\n";
記憶體用量:387896 位元組 記憶體用量:400216 位元組 記憶體用量:387928 位元組
memory_get_usage
函數預設會傳回程式已使用的記憶體用量,不包含已配置但尚未使用的部分,若要連同尚未使用的部分也納入計算,則可將參數設定為 TRUE
:
# 取得目前記憶體總用量(含尚未使用) $memoryUsage = memory_get_usage(TRUE); echo "總記憶體用量:$memoryUsage 位元組\n";
記憶體最大用量
若要取得程式執行期間記憶體的最大用量,可以使用 memory_get_peak_usage
函數:
$memoryUsagePeak = memory_get_peak_usage(); echo "透過 emalloc() 所使用的記憶體最大值:$memoryUsagePeak 位元組\n";
memory_get_peak_usage
函數預設會傳回 emalloc()
配置記憶體用量的最大值,若要查詢整個 PHP 程式的記憶體用量最大值,要將第一個參數設定為 TRUE
,這樣才會顯示最高的記憶體實際用量:
$memoryUsagePeak = memory_get_peak_usage(TRUE); echo "PHP 實際所使用的記憶體最大值:$memoryUsagePeak 位元組\n";