深入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初学者头痛的十四个问题
Jul 12 PHP
我用php+mysql写的留言本
Oct 09 PHP
PHP parse_url 一个好用的函数
Oct 03 PHP
PHP 文件上传全攻略
Apr 28 PHP
PHP学习笔记 用户注册模块用户类以及验证码类
Sep 20 PHP
使用JSON实现数据的跨域传输的php代码
Dec 20 PHP
PHP 第三节 变量介绍
Apr 28 PHP
深入apache配置文件httpd.conf的部分参数说明
Jun 28 PHP
PHP通过文件路径获取文件名的实例代码
Oct 14 PHP
php+js实现的无刷新下载文件功能示例
Aug 23 PHP
laravel5.1 ajax post 传值_token示例
Oct 24 PHP
PHP实现随机发扑克牌
Apr 22 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
WordPress中Gravatar头像缓存到本地及相关优化的技巧
2015/12/19 PHP
python进程与线程小结实例分析
2018/11/11 PHP
Javascript常考语句107条收集
2010/03/09 Javascript
动态调用CSS文件的JS代码
2010/07/29 Javascript
jQuery打字效果实现方法(附demo源码下载)
2015/12/18 Javascript
JS获取checkbox的个数简单实例
2016/08/19 Javascript
利用JS提交表单的几种方法和验证(必看篇)
2016/09/17 Javascript
jQuery中Datatables增加跳转到指定页功能
2017/02/08 Javascript
js实现颜色阶梯渐变效果(Gradient算法)
2017/03/21 Javascript
Angular 4.x中表单Reactive Forms详解
2017/04/25 Javascript
jquery中each循环的简单回滚操作
2017/05/05 jQuery
详解基于node的前端项目编译时内存溢出问题
2017/08/01 Javascript
基于Vue.js 2.0实现百度搜索框效果
2020/12/28 Javascript
Vue-cli 使用json server在本地模拟请求数据的示例代码
2017/11/02 Javascript
node.js用fs.rename强制重命名或移动文件夹的方法
2017/12/27 Javascript
Vue.directive 自定义指令的问题小结
2018/03/04 Javascript
微信小程序中换行空格(多个空格)写法详解
2018/07/10 Javascript
js异步上传多张图片插件的使用方法
2018/10/22 Javascript
[54:08]LGD女子刀塔学院 DOTA2炼金术士教学
2014/01/09 DOTA
在Django的URLconf中使用命名组的方法
2015/07/18 Python
pygame 精灵的行走及二段跳的实现方法(必看篇)
2017/07/10 Python
[原创]Python入门教程1. 基本运算【四则运算、变量、math模块等】
2018/10/28 Python
python用fsolve、leastsq对非线性方程组求解
2018/12/15 Python
python远程邮件控制电脑升级版
2019/05/23 Python
Python3中urlencode和urldecode的用法详解
2019/07/23 Python
Django ORM 自定义 char 类型字段解析
2019/08/09 Python
解决python中显示图片的plt.imshow plt.show()内存泄漏问题
2020/04/24 Python
法国时尚品牌乐都特瑞士站:La Redoute瑞士
2016/09/05 全球购物
历史专业学生的自我评价
2014/02/28 职场文书
艺术设计专业个人求职信
2014/04/10 职场文书
工作分析计划书
2014/04/30 职场文书
学校办公室主任岗位职责
2015/04/01 职场文书
天堂的孩子观后感
2015/06/11 职场文书
失恋33天观后感
2015/06/11 职场文书
2019终止劳动合同协议书最新范本!
2019/07/09 职场文书
【TED出品】天梯非主流开心游1700 划水骑士
2022/03/31 魔兽争霸