1. 程式人生 > >php記憶體管理之記憶體分配

php記憶體管理之記憶體分配

鑑於系統開銷的呼叫,一些對效能有要求的應用通常會在自己的使用者態進行記憶體管理,比如在第一次申請一塊較大的記憶體留著

備用,而不是使用完馬上還給作業系統,可以進行復用,避免多次申請和釋放帶來的開銷。

一般讀取超大檔案到記憶體、超大陣列、大迴圈記憶體沒有釋放等都會出現記憶體佔用過大。

php.ini 通過memery_limit或者在程式碼裡ini_setl來設定最大記憶體

php記憶體是通過zendmm來進行管理的,主要包括介面層,堆層和儲存層

php對記憶體的管理主要圍繞小塊記憶體列表,大塊記憶體列表和剩餘記憶體列表分層進行的。

1、記憶體檢查,如果太大則報錯

2、如果命中快取,則使用fastcache中記憶體塊

3、在zendMM中heap層根據申請大小從小塊記憶體、大塊記憶體、剩餘記憶體中查詢合適記憶體

4、如果還沒合適的,則直接再申請一塊記憶體

5、重設heap狀態

6、返回記憶體地址、標誌變數維護