在上一節我們已經簡單的提到:回收可能根有細微的性能上影響,但這是把PHP 5.2與PHP 5.3比較時才有的。儘管在PHP 5.2中,記錄可能根相對於完全不記錄可能根要慢些,而PHP 5.3中對 PHP run-time 的其他修改減少了這個性能損失。
這裡主要有兩個領域對效能有影響。第一個是記憶體佔用空間的節省,另一個是垃圾回收機制執行記憶體清理時的執行時間增加(run-time delay)。我們將研究這兩個領域。
記憶體佔用空間的節省
首先,實現垃圾回收機制的整個原因是為了,一旦先決條件滿足,透過清理循環引用的變數來節省記憶體佔用。在PHP執行中,一旦根緩衝區滿了或呼叫 gc_collect_cycles()函數時,就會執行垃圾回收。在下圖中,顯示了下面腳本分別在PHP 5.2 和 PHP 5.3環境下的記憶體佔用情況,其中排除了腳本啟動時PHP本身所佔用的基本記憶體。
Example #1 記憶體使用範例
<?php class Foo { public $var = '3.1415962654'; } $baseMemory = memory_get_usage(); for ( $i = 0; $i <= 100000; $i++ ) { $a = new Foo; $a->self = $a; if ( $i % 500 === 0 ) { echo sprintf( '%8d: ', $i ), memory_get_usage() - $baseMemory, "\n"; } } ?>
以上就是PHP特點之垃圾回收機制3-效能方面考慮的因素的內容,更多相關內容請關注PHP中文網(www.php.cn)!