深入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 preg_filter执行一个正则表达式搜索和替换
Feb 27 PHP
php采集文章中的图片获取替换到本地(实现代码)
Jul 08 PHP
PHP管理依赖(dependency)关系工具 Composer的自动加载(autoload)
Aug 18 PHP
PHP自毁程序(慎用)
Jul 09 PHP
PHP 7的一些引人注目的新特性简单介绍
Nov 08 PHP
linux下为php添加iconv模块的方法
Feb 28 PHP
Yii2框架配置文件(Application属性)与调试技巧实例分析
May 27 PHP
php抽象类和接口知识点整理总结
Aug 02 PHP
php报错502badgateway解决方法
Oct 11 PHP
解决php用mysql方式连接数据库出现Deprecated报错问题
Dec 25 PHP
YII2框架中behavior行为的理解与使用方法示例
Mar 13 PHP
PHP内存溢出优化代码详解
Feb 26 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
根德Grundig S400/S500/S700电路分析
2021/03/02 无线电
PHP 防注入函数(格式化数据)
2011/08/08 PHP
php通过session防url攻击方法
2014/12/10 PHP
php的socket编程详解
2016/11/20 PHP
php实现的二叉树遍历算法示例
2017/06/15 PHP
jquery模拟按下回车实现代码
2011/09/20 Javascript
js获取光标位置和设置文本框光标位置示例代码
2014/01/09 Javascript
javascript的switch用法注意事项分析
2015/02/02 Javascript
jquery实现标签支持图文排列带上下箭头按钮的选项卡
2015/03/14 Javascript
jQuery中extend函数详解
2015/07/13 Javascript
第一篇初识bootstrap
2016/06/21 Javascript
Node.js中使用jQuery的做法
2016/08/17 Javascript
JS实现动态给标签控件添加事件的方法示例
2017/05/13 Javascript
JS处理一些简单计算题
2018/02/24 Javascript
angular5 子组件监听父组件传入值的变化方法
2018/09/30 Javascript
vue 实现模糊检索并根据其他字符的首字母顺序排列
2019/09/19 Javascript
实例讲解Python设计模式编程之工厂方法模式的使用
2016/03/02 Python
Python3.6 Schedule模块定时任务(实例讲解)
2017/11/09 Python
Python数据结构与算法之完全树与最小堆实例
2017/12/13 Python
运动检测ViBe算法python实现代码
2018/01/09 Python
wxPython窗体拆分布局基础组件
2019/11/19 Python
基于python图像处理API的使用示例
2020/04/03 Python
利用CSS3实现单选框动画特效示例代码
2016/09/26 HTML / CSS
Mio Skincare中文官网:肌肤和身体护理
2016/10/26 全球购物
美国钻石商店:Zales
2016/11/20 全球购物
美国杰西潘尼官网:JCPenney
2019/06/12 全球购物
初一英语教学反思
2014/01/11 职场文书
标准的毕业生自荐信
2014/04/20 职场文书
小学先进集体事迹材料
2014/05/31 职场文书
小学生推普周国旗下讲话稿
2014/09/21 职场文书
三好学生事迹材料
2014/12/24 职场文书
内勤岗位职责
2015/02/10 职场文书
住房公积金贷款工资证明
2015/06/12 职场文书
2016年优秀教师先进事迹材料
2016/02/26 职场文书
AJAX学习笔记
2021/05/18 Javascript
一文搞懂Redis中String数据类型
2022/04/03 Redis