深入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 和 XML: 使用expat函数(二)
Oct 09 PHP
一个好用的分页函数
Nov 16 PHP
Zend 输出产生XML解析错误
Mar 03 PHP
关于Appserv无法打开localhost问题的解决方法
Oct 16 PHP
上传文件先创建目录 再上传到目录里面去
Dec 29 PHP
PHP Session 变量的使用方法详解与实例代码
Sep 11 PHP
php数组删除元素示例
Mar 21 PHP
jQuery Mobile + PHP实现文件上传
Dec 12 PHP
php相对当前文件include其它文件的方法
Mar 13 PHP
PHP多维数组遍历方法(2种实现方法)
Dec 10 PHP
php将服务端的文件读出来显示在web页面实例
Oct 31 PHP
php基于Redis消息队列实现的消息推送的方法
Nov 28 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
php异常处理技术,顶级异常处理器
2012/06/13 PHP
PHP中include与require使用方法区别详解
2013/10/19 PHP
php实现微信公众号创建自定义菜单功能的实例代码
2019/06/11 PHP
Laravel数据库读写分离配置的方法
2019/10/13 PHP
通过JAVASCRIPT读取ASP设定的COOKIE
2007/02/15 Javascript
JavaScript获取DOM元素的11种方法总结
2015/04/25 Javascript
基于JavaScript实现生成名片、链接等二维码
2015/09/20 Javascript
AngularJS向后端ASP.NET API控制器上传文件
2016/02/03 Javascript
实用jquery操作表单元素的简单代码
2016/07/04 Javascript
瀑布流的实现方式(原生js+jquery+css3)
2020/06/28 Javascript
JavaScript登录验证码的实现
2016/10/27 Javascript
jQuery设计思想
2017/03/07 Javascript
详解Vue微信公众号开发踩坑全记录
2017/08/21 Javascript
基于jQuery Ajax实现下拉框无刷新联动
2017/12/06 jQuery
基于datepicker定义自己的angular时间组件的示例
2018/03/14 Javascript
Vue Router去掉url中默认的锚点#
2018/08/01 Javascript
JavaScript实现猜数字游戏
2020/05/20 Javascript
react项目从新建到部署的实现示例
2021/02/19 Javascript
[23:18]Spirit vs Liquid Supermajor小组赛A组 BO3 第二场 6.2
2018/06/03 DOTA
python机器学习理论与实战(四)逻辑回归
2018/01/19 Python
Python实现的各种常见分布算法示例
2018/12/13 Python
中国海淘族值得信赖的海淘返利网站:55海淘
2017/01/16 全球购物
巴西图书和电子产品购物网站:Saraiva
2017/06/07 全球购物
学前教育教师求职自荐信
2013/09/22 职场文书
自主招生自荐信
2013/12/08 职场文书
会计专业职业规划:规划自我赢取未来
2014/02/12 职场文书
主题党日活动总结
2014/07/08 职场文书
班主任与学生安全责任书
2014/07/25 职场文书
2015届大学生就业推荐表自我评价
2014/09/27 职场文书
居委会个人对照检查材料思想汇报
2014/09/29 职场文书
离婚协议书范本2014
2014/10/27 职场文书
平凡的世界读书笔记
2015/06/25 职场文书
关于职业道德的心得体会
2016/01/18 职场文书
2016年艾滋病宣传活动总结
2016/04/01 职场文书
无线电通信名词解释
2022/02/18 无线电
Python+Matplotlib+LaTeX玩转数学公式
2022/02/24 Python