深入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代码
Aug 08 PHP
PHP系列学习之日期函数使用介绍
Aug 18 PHP
PHP循环遍历数组的3种方法list()、each()和while总结
Nov 19 PHP
PHP中使用CURL获取页面title例子
Jan 07 PHP
php绘制一个扇形的方法
Jan 24 PHP
php使用Jpgraph绘制柱形图的方法
Jun 10 PHP
在Mac上编译安装PHP7的开发环境
Jul 28 PHP
Session 失效的原因汇总及解决丢失办法
Sep 30 PHP
php使用自定义函数实现汉字分割替换功能示例
Jan 30 PHP
PHP遍历目录文件的常用方法小结
Feb 03 PHP
php7 安装yar 生成docker镜像
May 09 PHP
对laravel in 查询的使用方法详解
Oct 09 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
攻克CakePHP系列三 表单数据增删改
2008/10/22 PHP
PHP魔术方法之__call与__callStatic使用方法
2017/07/23 PHP
总结PHP中初始化空数组的最佳方法
2019/02/13 PHP
Javascript中的回调函数和匿名函数的回调示例介绍
2014/05/12 Javascript
2014年50个程序员最适用的免费JQuery插件
2014/12/15 Javascript
jquery移动节点实例
2015/01/14 Javascript
jquery自定义表格样式
2015/11/23 Javascript
jQuery过滤选择器用法示例
2016/09/12 Javascript
Node.js发送HTTP客户端请求并显示响应结果的方法示例
2017/04/12 Javascript
解决vue+element 键盘回车事件导致页面刷新的问题
2018/08/25 Javascript
Vue-CLI 3.X 部署项目至生产服务器的方法
2019/03/22 Javascript
详解JS实现系统登录页的登录和验证
2019/04/29 Javascript
js实现双人五子棋小游戏
2020/05/28 Javascript
WebStorm中如何将自己的代码上传到github示例详解
2020/10/28 Javascript
python计算最小优先级队列代码分享
2013/12/18 Python
详细解析Python中__init__()方法的高级应用
2015/05/11 Python
利用Python中unittest实现简单的单元测试实例详解
2017/01/09 Python
Flask配置Cors跨域的实现
2019/07/12 Python
python多进程下实现日志记录按时间分割
2019/07/22 Python
django foreignkey外键使用的例子 相当于left join
2019/08/06 Python
PyCharm无法引用自身项目解决方式
2020/02/12 Python
virtualenv介绍及简明教程
2020/06/23 Python
html5中为audio标签增加停止按钮动作实现方法
2013/01/04 HTML / CSS
QA工程师岗位职责
2013/11/20 职场文书
技校生自我鉴定
2013/12/08 职场文书
关于环保的建议书400字
2014/03/12 职场文书
银行求职自荐书
2014/06/25 职场文书
机关党员四风问题个人整改措施
2014/10/26 职场文书
公司股份合作协议书
2014/12/07 职场文书
开幕式邀请函
2015/01/31 职场文书
台风停课通知
2015/04/24 职场文书
小学五年级班主任工作经验交流材料
2015/11/02 职场文书
Python pandas读取CSV文件的注意事项(适合新手)
2021/06/20 Python
Java Spring读取和存储详细操作
2022/08/05 Java/Android
Python pyecharts案例超市4年数据可视化分析
2022/08/14 Python
Win10开机修复磁盘错误怎么跳过?Win10关闭开机磁盘检查的方法
2022/09/23 数码科技