深入PHP内存相关的功能特性详解


Posted in PHP onJune 08, 2013

可能有的读者碰到过类似下面的错误吧:
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掉之后可能会释放掉它所占用的空间

PHP 相关文章推荐
PHP 显示客户端IP与服务器IP的代码
Oct 12 PHP
yii框架源码分析之创建controller代码
Jun 28 PHP
php实现过滤表单提交中html标签的方法
Oct 17 PHP
PHP实现获取FLV文件的时间
Feb 10 PHP
学习php设计模式 php实现工厂模式(factory)
Dec 07 PHP
php实现倒计时效果
Dec 19 PHP
php使用Header函数,PHP_AUTH_PW和PHP_AUTH_USER做用户验证
May 04 PHP
PHP自定义函数获取URL中一级域名的方法
Aug 23 PHP
thinkphp整合微信支付代码分享
Nov 24 PHP
php 广告点击统计代码(php+mysql)
Feb 21 PHP
php 可变函数使用小结
Jun 12 PHP
ThinkPHP5.0框架验证码功能实现方法【基于第三方扩展包】
Mar 11 PHP
PHP rawurlencode与urlencode函数的深入分析
Jun 08 #PHP
PHP跳转页面的几种实现方法详解
Jun 08 #PHP
利用php递归实现无限分类 格式化数组的详解
Jun 08 #PHP
如何利用php array_multisort函数 对数据库结果进行复杂排序
Jun 08 #PHP
php引用返回与取消引用的详解
Jun 08 #PHP
PHP stripos()函数及注意事项的分析
Jun 08 #PHP
php自动加载机制的深入分析
Jun 08 #PHP
You might like
PHP5在Apache下的两种模式的安装
2006/09/05 PHP
php.ini-dist 和 php.ini-recommended 的区别介绍(方便开发与安全的朋友)
2012/07/01 PHP
php使用sql数据库 获取字段问题介绍
2013/08/12 PHP
php mail to 配置详解
2014/01/16 PHP
根据ip调用新浪api获取城市名并转成拼音
2014/03/07 PHP
PHP数组相加操作及与array_merge的区别浅析
2016/11/26 PHP
centos下file_put_contents()无法写入文件的原因及解决方法
2017/04/01 PHP
实例说明js脚本语言和php脚本语言的区别
2019/04/04 PHP
一个多次搜索+多次传值的解决方案
2007/01/20 Javascript
javascript中xml操作实现代码
2011/11/21 Javascript
Jquery倒数计时按钮setTimeout的实例代码
2013/07/04 Javascript
jQuery实现在最后一个元素之前插入新元素的方法
2015/07/18 Javascript
原生javascript实现分页效果
2017/04/21 Javascript
Angular CLI在Angular项目中如何使用scss详解
2018/04/10 Javascript
vue修改对象的属性值后页面不重新渲染的实例
2018/08/09 Javascript
validform表单验证的实现方法
2019/03/08 Javascript
在vue中获取微信支付code及code被占用问题的解决方法
2019/04/16 Javascript
JavaScript日期库date-fn.js使用方法解析
2020/09/09 Javascript
Python是编译运行的验证方法
2015/01/30 Python
python中pass语句用法实例分析
2015/04/30 Python
python安装教程
2018/02/28 Python
分分钟入门python语言
2018/03/20 Python
python lxml中etree的简单应用
2019/05/10 Python
Django视图、传参和forms验证操作
2020/07/15 Python
Python 解析简单的XML数据
2020/07/24 Python
ubuntu16.04升级Python3.5到Python3.7的方法步骤
2020/08/20 Python
基于 HTML5 Canvas实现 的交互式地铁线路图
2018/03/05 HTML / CSS
美国学校校服,儿童和婴儿服装:Cookie’s Kids
2016/10/14 全球购物
YSL圣罗兰美妆官方旗舰店:购买YSL口红
2018/04/16 全球购物
澳大利亚优惠网站:Deals.com.au
2019/07/02 全球购物
亚马逊加拿大网站:Amazon.ca
2020/01/06 全球购物
求职简历中个人的自我评价
2013/12/25 职场文书
淘宝网店营销策划书
2014/01/11 职场文书
舞蹈社团活动总结
2015/05/07 职场文书
民间借贷借条如何写
2015/05/26 职场文书
Python闭包的定义和使用方法
2022/04/11 Python