深入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和XSS跨站攻击的防范
Apr 17 PHP
php下实现在指定目录搜索指定类型文件的函数
Oct 03 PHP
mysql From_unixtime及UNIX_TIMESTAMP及DATE_FORMAT日期函数
Mar 21 PHP
php小技巧 把数组的键和值交换形成了新的数组,查找值取得键
Jun 02 PHP
PHP 二维数组根据某个字段排序的具体实现
Jun 03 PHP
php字符串截取函数用法分析
Nov 25 PHP
PHP中生成UUID自定义函数分享
Jun 10 PHP
隐性调用php程序的方法
Jun 13 PHP
php 使用curl模拟ip和来源进行访问的实现方法
May 02 PHP
PHP机器学习库php-ml的简单测试和使用方法
Jul 14 PHP
Laravel框架控制器的middleware中间件用法分析
Sep 30 PHP
PHP正则之正向预查与反向预查讲解与实例
Apr 06 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+MySQL 手工注入语句大全 推荐
2009/10/30 PHP
php递归实现无限分类生成下拉列表的函数
2010/08/08 PHP
PHP第一季视频教程(李炎恢+php100 不断更新)
2011/05/29 PHP
PHP中英混合字符串截取函数代码
2011/07/17 PHP
laravel框架之数据库查出来的对象实现转化为数组
2019/10/23 PHP
JavaScript中isPrototypeOf函数作用和使用实例
2015/06/01 Javascript
在Javascript中处理数组之toSource()方法的使用
2015/06/09 Javascript
ng2学习笔记之bootstrap中的component使用教程
2017/03/09 Javascript
JS运动改变单物体透明度的方法分析
2018/01/23 Javascript
vue 实现通过手机发送短信验证码注册功能
2018/04/19 Javascript
详解使用mpvue开发github小程序总结
2018/07/25 Javascript
JS实现数组的增删改查操作示例
2018/08/29 Javascript
bootstrap table实现合并单元格效果
2018/12/24 Javascript
nodejs中内置模块fs,path常见的用法说明
2020/11/07 NodeJs
Vue实现小购物车功能
2020/12/21 Vue.js
火车票抢票python代码公开揭秘!
2018/03/08 Python
python如何派生内置不可变类型并修改实例化行为
2018/03/21 Python
Python中的Numpy矩阵操作
2018/08/12 Python
浅谈django orm 优化
2018/08/18 Python
python识别验证码图片实例详解
2020/02/17 Python
python爬虫开发之Request模块从安装到详细使用方法与实例全解
2020/03/09 Python
基于python 将列表作为参数传入函数时的测试与理解
2020/06/05 Python
python如何从键盘获取输入实例
2020/06/18 Python
印尼在线购买隐形眼镜网站:Lensza.co.id
2019/04/27 全球购物
方法名是否可以与构造器的名字相同
2012/06/04 面试题
递归计算如下递归函数的值(斐波拉契)
2012/02/04 面试题
机电一体化专业应届生求职信
2013/11/27 职场文书
写自荐信三大法宝
2014/01/24 职场文书
装修协议书范本
2014/04/21 职场文书
趣味运动会策划方案
2014/06/02 职场文书
拔河比赛口号
2014/06/10 职场文书
竞选班干部演讲稿300字
2014/08/20 职场文书
学习十八届四中全会精神思想汇报
2014/10/23 职场文书
2015年安全保卫工作总结
2015/05/14 职场文书
分析SQL窗口函数之取值窗口函数
2022/04/21 Oracle
apache虚拟主机配置的三种方式(小结)
2022/07/23 Servers