深入PHP記憶體相關的功能特性詳解_php技巧

來源:互聯網
上載者:User

可能有的讀者碰到過類似下面的錯誤吧:
Fatal error: Allowed memory size of X bytes exhausted (tried to allocate Y bytes)這個錯誤的資訊很明確,PHP已經達到了允許使用的最大記憶體了,通常上來說這很有可能是我們的程式編寫的有些問題。比如:一次性讀取超大的檔案到記憶體中,或者出現超大的數組,或者在大迴圈中的沒有及時是放掉不再使用的變數,這些都有可能會造成記憶體佔用過大而被終止。

PHP預設的最大記憶體使用量大小是32M, 如果你真的需要使用超過32M的記憶體可以修改php.ini設定檔的如下配置:

memory_limit = 32M如果你無法修改php設定檔,同時你的PHP環境沒有禁用ini_set()函數,也可以動態修改最大的記憶體佔用大小:

<?php ini_set("memory_limit", "128M");既然我們能動態調整最大的記憶體佔用,那我們是否有辦法擷取目前的記憶體佔用情況呢?答案是肯定的。

1.memory_get_usage(),這個函數的作用是擷取目前PHP指令碼所用的記憶體大小。
2.memory_get_peak_usage(),這個函數的作用返回當前指令碼到目前位置所佔用的記憶體峰值,這樣就可能擷取到目前的指令碼的記憶體需求情況。
單就PHP使用者空間提供的功能來說,我們似乎無法控制記憶體的使用,只能被動的擷取記憶體的佔用情況

那麼當我們知道php引用計數,函數表,符號表,常量表等,這些資訊都會佔用記憶體的時候

我們可以有意的避免不必要的浪費記憶體,比如我們在項目中通常會使用autoload來避免一次性把不一定會使用的類包含進來,而這些資訊是會佔用記憶體的

如果我們及時把不再使用的變數unset掉之後可能會釋放掉它所佔用的空間

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.