php中的內存管理

一、php內存管理概述——Zend引擎

  1. 由於計算機的內存由操作系統進行管理,所以普通應用程序是無法直接對內存進行訪問的。
  2. 應用程序只能向操作系統申請內存,通常的應用也是這麼做的,在需要的時候通過類似malloc之類的庫函數 向操作系統申請內存。
  3. 在一些對性能要求較高的應用場景下是需要頻繁的使用和釋放內存的, 比如Web服務器,編程語言等,由於向操作系統申請內存空間會引發系統調用, 系統調用和普通的應用層函數調用性能差別非常大,因爲系統調用會將CPU從用戶態切換到內核, 因爲涉及到物理內存的操作,只有操作系統才能進行,而這種切換的成本是非常大的, 如果頻繁的在內核態和用戶態之間切換會產生性能問題。
  4. 鑑於系統調用的開銷,一些對性能有要求的應用通常會自己在用戶態進行內存管理, 例如第一次申請稍大的內存留着備用,而使用完釋放的內存並不是馬上歸還給操作系統, 可以將內存進行復用,這樣可以避免多次的內存申請和釋放所帶來的性能消耗。
  5. PHP不需要顯式的對內存進行管理,這些工作都由Zend引擎進行管理了。PHP內部有一個內存管理體系, 它會自動將不再使用的內存垃圾進行釋放。

二、php中查看與設置內存的相關參數與函數

  1. 配置內存大小:

    (1)php.ini中可以更改配置memory_limit = 32M
    (2)若環境中沒有禁用ini_set()函數,可以通過此函數設置:ini_set("memory_limit", "128M");
  2. 查看內存情況:

    (1)memory_get_usage(),這個函數的作用是獲取 目前PHP腳本所用的內存大小。
    (2)memory_get_peak_usage(),這個函數的作用返回 當前腳本到目前位置所佔用的內存峯值,這樣就可能獲取到目前的腳本的內存需求情況。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章