深入PHP內(nèi)存相關(guān)的功能特性詳解
可能有的讀者碰到過類似下面的錯誤吧:
Fatal error: Allowed memory size of X bytes exhausted (tried to allocate Y bytes)這個錯誤的信息很明確,PHP已經(jīng)達到了允許使用的最大內(nèi)存了,通常上來說這很有可能是我們的程序編寫的有些問題。比如:一次性讀取超大的文件到內(nèi)存中,或者出現(xiàn)超大的數(shù)組,或者在大循環(huán)中的沒有及時是放掉不再使用的變量,這些都有可能會造成內(nèi)存占用過大而被終止。
PHP默認(rèn)的最大內(nèi)存使用大小是32M, 如果你真的需要使用超過32M的內(nèi)存可以修改php.ini配置文件的如下配置:
memory_limit = 32M如果你無法修改php配置文件,同時你的PHP環(huán)境沒有禁用ini_set()函數(shù),也可以動態(tài)的修改最大的內(nèi)存占用大小:
<?php ini_set("memory_limit", "128M");既然我們能動態(tài)的調(diào)整最大的內(nèi)存占用,那我們是否有辦法獲取目前的內(nèi)存占用情況呢?答案是肯定的。
1.memory_get_usage(),這個函數(shù)的作用是獲取目前PHP腳本所用的內(nèi)存大小。
2.memory_get_peak_usage(),這個函數(shù)的作用返回當(dāng)前腳本到目前位置所占用的內(nèi)存峰值,這樣就可能獲取到目前的腳本的內(nèi)存需求情況。
單就PHP用戶空間提供的功能來說,我們似乎無法控制內(nèi)存的使用,只能被動的獲取內(nèi)存的占用情況
那么當(dāng)我們知道php引用計數(shù),函數(shù)表,符號表,常量表等,這些信息都會占用內(nèi)存的時候
我們可以有意的避免不必要的浪費內(nèi)存,比如我們在項目中通常會使用autoload來避免一次性把不一定會使用的類包含進來,而這些信息是會占用內(nèi)存的
如果我們及時把不再使用的變量unset掉之后可能會釋放掉它所占用的空間
- 關(guān)于PHP內(nèi)存溢出問題的解決方法
- phpExcel導(dǎo)出大量數(shù)據(jù)出現(xiàn)內(nèi)存溢出錯誤的解決方法
- PHP對象遞歸引用造成內(nèi)存泄漏分析
- 深入解析PHP垃圾回收機制對內(nèi)存泄露的處理
- PHP變量內(nèi)存分配問題記錄整理
- 關(guān)于php內(nèi)存不夠用的快速解決方法
- 解析PHP中的unset究竟會不會釋放內(nèi)存
- 深入解析PHP內(nèi)存管理之誰動了我的內(nèi)存
- php頁面消耗內(nèi)存過大的處理辦法
- 如何獲知PHP程序占用多少內(nèi)存(memory_get_usage)
- PHP對象相互引用的內(nèi)存溢出實例分析
相關(guān)文章
Laravel框架使用技巧之使用url()全局函數(shù)返回前一個頁面的地址方法詳解
這篇文章主要介紹了Laravel框架使用技巧之使用url()全局函數(shù)返回前一個頁面的地址,需要的朋友可以參考下2020-04-04php+mysqli使用預(yù)處理技術(shù)進行數(shù)據(jù)庫查詢的方法
這篇文章主要介紹了php+mysqli使用預(yù)處理技術(shù)進行數(shù)據(jù)庫查詢的方法,實例分析了php+mysqli預(yù)處理技術(shù)的使用技巧,需要的朋友可以參考下2015-01-01php將print_r處理后的數(shù)據(jù)還原為原始數(shù)組的解決方法
下面小編就為大家?guī)硪黄猵hp中將print_r處理后的數(shù)據(jù)還原為原始數(shù)組的方法。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考2016-11-11