深入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 print EOF实现方法
May 21 PHP
php set_time_limit()函数的使用详解
Jun 05 PHP
php+js实现异步图片上传实例分享
Jun 02 PHP
ThinkPHP之R方法实例详解
Jun 20 PHP
php广告加载类用法实例
Sep 23 PHP
推荐一款MAC OS X 下php集成开发环境mamp
Nov 08 PHP
php+ajax实时刷新简单实例
Feb 25 PHP
fckeditor上传文件按日期存放及重命名方法
May 22 PHP
使用PHP连接多种数据库的实现代码(mysql,access,sqlserver,Oracle)
Dec 21 PHP
PHP实现针对日期,月数,天数,周数,小时,分,秒等的加减运算示例【基于strtotime】
Apr 19 PHP
PHP实践教程之过滤、验证、转义与密码详解
Jul 24 PHP
PHP异常类及异常处理操作实例详解
Dec 19 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导出csv格式数据并将数字转换成文本的思路以及代码分享
2014/06/05 PHP
Linux下手动编译安装PHP扩展的例子分享
2014/07/15 PHP
php程序员应具有的7种能力小结
2014/11/27 PHP
对PHP依赖注入的理解实例分析
2016/10/09 PHP
php爬取天猫和淘宝商品数据
2018/02/23 PHP
laravel 解决Validator使用中出现的问题
2019/10/25 PHP
gearman管理工具GearmanManager的安装与php使用方法示例
2020/02/27 PHP
js修改input的type属性问题探讨
2013/10/12 Javascript
js使用循环清空某个div中的input标签值
2014/09/29 Javascript
jquery制作属于自己的select自定义样式
2015/11/23 Javascript
Bootstrap实现登录校验表单(带验证码)
2016/06/23 Javascript
javascript深拷贝(deepClone)详解
2016/08/24 Javascript
最常见的左侧分类菜单栏jQuery实现代码
2016/11/28 Javascript
js select下拉联动 更具级联性!
2020/04/17 Javascript
bootstrapValidator 重新启用提交按钮的方法
2017/02/20 Javascript
详解用vue-cli来搭建vue项目和webpack
2017/04/20 Javascript
浅谈在vue项目中如何定义全局变量和全局函数
2017/10/24 Javascript
vue 2.0 购物车小球抛物线的示例代码
2018/02/01 Javascript
微信小程序使用form表单获取输入框数据的实例代码
2018/05/17 Javascript
vue实现倒计时获取验证码效果
2020/04/17 Javascript
浅谈Vue2.4.0 $attrs与inheritAttrs的具体使用
2020/03/08 Javascript
Vue通过Blob对象实现导出Excel功能示例代码
2020/07/31 Javascript
python进阶教程之模块(module)介绍
2014/08/30 Python
Python 实现简单的电话本功能
2015/08/09 Python
Python 限定函数参数的类型及默认值方式
2019/12/24 Python
Python pandas库中的isnull()详解
2019/12/26 Python
Python timer定时器两种常用方法解析
2020/01/20 Python
Python截图并保存的具体实例
2021/01/14 Python
在加拿大在线租赁和购买电子游戏:Game Access
2019/09/02 全球购物
如何查找和删除数据库中的重复数据
2014/11/05 面试题
会计大学生职业生涯规划书范文
2014/01/13 职场文书
甜品店创业计划书
2014/09/21 职场文书
仓库管理员岗位职责
2015/02/03 职场文书
用Python将GIF动图分解成多张静态图片
2021/06/11 Python
Python实现老照片修复之上色小技巧
2021/10/16 Python
HttpClient实现表单提交上传文件
2022/08/14 Java/Android