深入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 11 PHP
php select,radio和checkbox默认选择的实现方法
May 15 PHP
php explode函数实例代码
Feb 27 PHP
CodeIgniter框架数据库事务处理的设计缺陷和解决方案
Jul 25 PHP
ThinkPHP分页实例
Oct 15 PHP
php实现屏蔽掉黑帽SEO的搜索关键字
Apr 15 PHP
CentOS下PHP7的编译安装及MySQL的支持和一些常见问题的解决办法
Dec 17 PHP
thinkphp命名空间用法实例详解
Dec 30 PHP
PHP访问数据库集群的方法小结
Mar 14 PHP
PHP递归实现文件夹的复制、删除、查看大小操作示例
Aug 11 PHP
php根据命令行参数生成配置文件详解
Mar 15 PHP
PHP7数组的底层实现示例
Aug 25 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生成excel列序号代码实例
2013/12/24 PHP
PHP抽奖算法程序代码分享
2015/10/08 PHP
深入理解PHP内核(一)
2015/11/10 PHP
PHP 配置后台登录以及模板引入
2017/01/24 PHP
PHP迭代器和迭代的实现与使用方法分析
2018/04/19 PHP
12个非常有创意的JavaScript小游戏
2010/03/18 Javascript
学习面向对象之面向对象的术语
2010/11/30 Javascript
js校验表单后提交表单的三种方法总结
2014/02/28 Javascript
深入分析Cookie的安全性问题
2015/03/01 Javascript
JS模式之简单的订阅者和发布者模式完整实例
2015/06/30 Javascript
VUE JS 使用组件实现双向绑定的示例代码
2017/01/10 Javascript
解决ionic和angular上拉加载的问题
2017/08/03 Javascript
Three.js实现绘制字体模型示例代码
2017/09/26 Javascript
React通过父组件传递类名给子组件的实现方法
2017/11/13 Javascript
Vue打包后出现一些map文件的解决方法
2018/02/13 Javascript
2种在vue项目中使用百度地图的简单方法
2018/09/28 Javascript
JavaScript学习笔记之基于定时器实现图片无缝滚动功能详解
2019/01/09 Javascript
vuex实现的简单购物车功能示例
2019/02/13 Javascript
浅谈Vuex的this.$store.commit和在Vue项目中引用公共方法
2020/07/24 Javascript
使用python实现tcp自动重连
2017/07/02 Python
Pycharm运行加载文本出现错误的解决方法
2019/06/27 Python
Python3交互式shell ipython3安装及使用详解
2020/07/11 Python
class类在python中获取金融数据的实例方法
2020/12/10 Python
IRO美国官网:法国服装品牌
2018/03/06 全球购物
同步和异步有何异同,在什么情况下分别使用他们?
2012/12/28 面试题
科室工作个人总结的自我评价
2013/10/29 职场文书
新员工入职感言
2014/02/01 职场文书
中国梦我的梦演讲稿
2014/04/23 职场文书
活动总结报告范文
2014/05/04 职场文书
欢迎领导检查标语
2014/06/27 职场文书
党员贯彻十八大精神思想汇报范文
2014/10/25 职场文书
事业单位聘任报告
2015/03/02 职场文书
检讨书格式
2015/05/07 职场文书
导游词之无锡东林书院
2019/12/11 职场文书
mysql中between的边界,范围说明
2021/06/08 MySQL
ssh服务器拒绝了密码 请再试一次已解决(亲测有效)
2022/08/14 Servers