深入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学习 运算符与运算符优先级
Jun 15 PHP
php 上一篇,下一篇文章实现代码与原理说明
May 09 PHP
zen cart新进商品的随机排序修改方法
Sep 10 PHP
PHP日期处理函数 整型日期格式
Jan 12 PHP
PHP字符串长度计算 - strlen()函数使用介绍
Oct 15 PHP
codeigniter中测试通过的分页类示例
Apr 17 PHP
一个比较不错的PHP日历类分享
Nov 18 PHP
php实现通过ftp上传文件
Jun 19 PHP
php实现用户注册密码的crypt加密
Jun 08 PHP
PHPExcel实现表格导出功能示例【带有多个工作sheet】
Jun 13 PHP
PHP面向对象程序设计之对象的遍历操作示例
Jun 12 PHP
你真的了解PHP中的引用符号(&)吗
May 12 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
Gregarius中文日期格式问题解决办法
2008/04/22 PHP
PHP APC缓存配置、使用详解
2014/03/06 PHP
thinkphp中session和cookie无效的解决方法
2014/12/19 PHP
php实现表单多按钮提交action的处理方法
2015/10/24 PHP
php实现PDO中捕获SQL语句错误的方法
2017/02/16 PHP
iis 7下安装laravel 5.4环境的方法教程
2017/06/14 PHP
基于JQuery实现相同内容合并单元格的代码
2011/01/12 Javascript
利用javascript实现web页面中指定区域打印
2013/10/30 Javascript
js写出遮罩层登陆框和对联广告并自动跟随滚动条滚动
2014/04/29 Javascript
jQuery中的$.ajax()方法应用
2014/05/06 Javascript
Javascript基础教程之定义和调用函数
2015/01/18 Javascript
jQuery使用$.ajax提交表单完整实例
2015/12/11 Javascript
jQuery实现获取table表格第一列值的方法
2016/03/01 Javascript
jquery ajax双击div可直接修改div中的内容
2016/03/04 Javascript
AngularJS入门教程之AngularJS指令
2016/04/18 Javascript
简单实现bootstrap导航效果
2017/02/07 Javascript
Angularjs上传文件组件flowjs功能
2017/08/07 Javascript
Vue 滚动行为的具体使用方法
2017/09/13 Javascript
this在vue和小程序中的使用详解
2019/01/28 Javascript
微信小程序如何实现精确的日期时间选择器
2020/01/21 Javascript
python中使用xlrd、xlwt操作excel表格详解
2015/01/29 Python
numpy concatenate数组拼接方法示例介绍
2019/05/27 Python
详解python中的生成器、迭代器、闭包、装饰器
2019/08/22 Python
python列表推导和生成器表达式知识点总结
2020/01/10 Python
python 爬取免费简历模板网站的示例
2020/09/27 Python
pycharm 的Structure界面设置操作
2021/02/05 Python
Python3压缩和解压缩实现代码
2021/03/01 Python
Europcar西班牙:全球汽车租赁领域的领导者
2018/09/17 全球购物
英国第一职业高尔夫商店:Clickgolf.co.uk
2020/11/18 全球购物
什么是Deployment descriptors;都有什么类型的部署描述符
2015/07/28 面试题
毕业生求职自荐信怎么写
2014/01/08 职场文书
乐观大学生的自我评价
2014/01/10 职场文书
任命书怎么写
2014/06/04 职场文书
我的梦想演讲稿500字
2014/08/21 职场文书
2014年英语工作总结
2014/12/20 职场文书
就业意向书范本
2015/05/11 职场文书