深入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 相关文章推荐
如何限制访问者的ip(PHPBB的代码)
Oct 09 PHP
PHP-MySQL教程归纳总结
Jun 07 PHP
PHP正则的Unknown Modifier错误解决方法
Mar 02 PHP
php 大数据量及海量数据处理算法总结
May 07 PHP
ucenter通信原理分析
Jan 09 PHP
PHP中Session和Cookie是如何操作的
Oct 10 PHP
PHP 的比较运算与逻辑运算详解
May 12 PHP
PHP 数组基本操作小结(推荐)
Jun 13 PHP
Yii2增删改查之查询 where参数详细介绍
Aug 08 PHP
php5.x禁用eval的操作方法
Oct 19 PHP
PHP fclose函数用法总结
Feb 15 PHP
PHP Beanstalkd消息队列的安装与使用方法实例详解
Feb 21 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中实现中文字符进制转换原理分析
2011/12/06 PHP
解析在apache里面给php写虚拟目录的详细方法
2013/06/24 PHP
简单谈谈PHP中的include、include_once、require以及require_once语句
2016/04/23 PHP
php 截取GBK文档某个位置开始的n个字符方法
2017/03/08 PHP
实现PHP中session存储及删除变量
2018/10/15 PHP
js+css使DIV始终居于屏幕中间 左下 左上 右上 右下的代码集合
2011/03/10 Javascript
jQuery 名称冲突的解决方法
2011/04/08 Javascript
动感效果的TAB选项卡jquery 插件
2011/07/09 Javascript
js判断客户端是iOS还是Android等移动终端的方法
2013/12/11 Javascript
jQuery中width()方法用法实例
2014/12/24 Javascript
Javascript节点关系实例分析
2015/05/15 Javascript
微信 java 实现js-sdk 图片上传下载完整流程
2016/10/21 Javascript
浅述节点的创建及常见功能的实现
2016/12/15 Javascript
Node.js制作简单聊天室
2017/01/12 Javascript
vuejs开发组件分享之H5图片上传、压缩及拍照旋转的问题处理
2017/03/06 Javascript
zTree节点文字过多的处理方法
2017/11/24 Javascript
使用Angular-CLI构建NPM包的方法
2018/09/07 Javascript
vue-vuex中使用commit提交mutation来修改state的方法详解
2018/09/16 Javascript
JavaScript实现新年倒计时效果
2018/11/17 Javascript
详解Angular中实现自定义组件的双向绑定的两种方法
2018/11/23 Javascript
小程序红包雨的实现示例
2019/02/19 Javascript
react+antd 递归实现树状目录操作
2020/11/02 Javascript
pycharm 使用心得(三)Hello world!
2014/06/05 Python
python中global用法实例分析
2015/04/30 Python
Python提取网页中超链接的方法
2016/09/18 Python
python获取外网IP并发邮件的实现方法
2017/10/01 Python
Python-ElasticSearch搜索查询的讲解
2019/02/25 Python
Flask框架请求钩子与request请求对象用法实例分析
2019/11/07 Python
Pandas之read_csv()读取文件跳过报错行的解决
2020/04/21 Python
美国知名女性服饰品牌:New York & Company
2017/03/23 全球购物
英国派对礼服和连衣裙购物网站:TFNC London
2018/07/07 全球购物
司机的工作范围及职责
2013/11/13 职场文书
办公室副主任岗位职责
2013/11/25 职场文书
煤矿安全生产月活动总结
2014/07/05 职场文书
2014年教师节国旗下讲话稿
2014/09/10 职场文书
Matplotlib绘制混淆矩阵的实现
2021/05/27 Python