深入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作的文本留言本的例子(一)
Oct 09 PHP
珊瑚虫IP库浅析
Feb 15 PHP
php $_ENV为空的原因分析
Jun 01 PHP
Windows IIS PHP 5.2 安装与配置方法
Jun 08 PHP
PHP setcookie指定domain参数后,在IE下设置cookie失效的解决方法
Sep 09 PHP
php文本转图片自动换行的方法
Mar 13 PHP
php使用base64加密解密图片示例分享
Jan 20 PHP
PHP树的深度编历生成迷宫及A*自动寻路算法实例分析
Mar 10 PHP
调用WordPress函数统计文章访问量及PHP原生计数器的实现
Mar 21 PHP
PHP目录操作实例总结
Sep 27 PHP
php基于自定义函数记录log日志方法
Jul 21 PHP
php实现数组重复数字统计实例
Sep 30 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
新浪新闻小偷
2006/10/09 PHP
CI框架中libraries,helpers,hooks文件夹详细说明
2014/06/10 PHP
WampServer下安装多个版本的PHP、mysql、apache图文教程
2015/01/07 PHP
PHP实现加密的几种方式介绍
2015/02/22 PHP
php通过sort()函数给数组排序的方法
2015/03/18 PHP
php去除二维数组的重复项方法
2015/11/03 PHP
Javascript实现的分页函数
2006/12/22 Javascript
javascript小数四舍五入多种方法实现
2012/12/23 Javascript
jquery清空表单数据示例分享
2014/02/13 Javascript
JavaScript学习笔记之Cookie对象
2015/01/22 Javascript
高性能JavaScript模板引擎实现原理详解
2015/02/05 Javascript
js实现的简单radio背景颜色选择器代码
2015/08/18 Javascript
最简单的tab切换实例代码
2016/05/13 Javascript
JavaScript职责链模式概述
2016/09/17 Javascript
Jquery循环截取字符串的方法(多出的字符串处理成&quot;...&quot;)
2016/11/28 Javascript
一个非常好用的文字滚动的案例,鼠标悬浮可暂停[两种方案任选]
2016/12/01 Javascript
vue模板语法-插值详解
2017/03/06 Javascript
JS实现二维数组横纵列转置的方法
2018/04/17 Javascript
原生JS实现的碰撞检测功能示例
2018/05/18 Javascript
详解vue中axios的封装
2018/07/18 Javascript
iView-admin 动态路由问题的解决方法
2018/10/03 Javascript
Vue 样式绑定的实现方法
2019/01/15 Javascript
js中数组对象去重的两种方法
2019/01/18 Javascript
原生js实现可兼容PC和移动端的拖动滑块功能详解【测试可用】
2019/08/15 Javascript
element ui分页多选,翻页记忆的实例
2019/09/03 Javascript
VUE-ElementUI 自定义Loading图操作
2020/11/11 Javascript
python通过pil将图片转换成黑白效果的方法
2015/03/16 Python
浅谈python中requests模块导入的问题
2018/05/18 Python
Django实战之用户认证(用户登录与注销)
2018/07/16 Python
Python项目 基于Scapy实现SYN泛洪攻击的方法
2019/07/23 Python
浅谈python图片处理Image和skimage的区别
2019/08/04 Python
python剪切视频与合并视频的实现
2020/03/03 Python
python datetime时间格式的相互转换问题
2020/06/11 Python
Python3 webservice接口测试代码详解
2020/06/23 Python
公证书
2019/04/17 职场文书
分享node.js实现简单登录注册的具体代码
2022/04/26 NodeJs