深入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+SQL 注入攻击的技术实现以及预防办法
Dec 29 PHP
php查询mysql数据库并将结果保存到数组的方法
Mar 18 PHP
PHP 7的一些引人注目的新特性简单介绍
Nov 08 PHP
Symfony2学习笔记之系统路由详解
Mar 17 PHP
Zend Framework教程之Zend_Db_Table表关联实例详解
Mar 23 PHP
JavaScript实现删除电脑的关机键
Jul 26 PHP
yii框架搜索分页modle写法
Dec 19 PHP
PHP编程文件处理类SplFileObject和SplFileInfo用法实例分析
Jul 22 PHP
PHP绕过open_basedir限制操作文件的方法
Jun 10 PHP
PHP微信H5支付开发实例
Jul 25 PHP
解决laravel 表单提交-POST 异常的问题
Oct 15 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中长文章分页显示实现代码
2012/09/29 PHP
CodeIgniter框架URL路由总结
2014/09/03 PHP
php比较相似字符串的方法
2015/06/05 PHP
CentOS下PHP7的编译安装及MySQL的支持和一些常见问题的解决办法
2015/12/17 PHP
PHP函数超时处理方法
2016/02/14 PHP
Thinkphp3.2.3整合phpqrcode生成带logo的二维码
2016/07/21 PHP
PHP加密技术的简单实现
2016/09/04 PHP
Yii框架弹出窗口组件CJuiDialog用法分析
2017/01/07 PHP
Laravel5.7 数据库操作迁移的实现方法
2019/04/12 PHP
多个iframe自动调整大小的问题
2006/09/18 Javascript
11款新鲜的jQuery插件[附所有demo下载]
2011/01/24 Javascript
IE中鼠标经过option触发mouseout的解决方法
2015/01/29 Javascript
有关JavaScript中call()和apply() 的一些理解
2016/05/20 Javascript
JS简单去除数组中重复项的方法
2016/09/13 Javascript
Angular.Js中ng-include指令的使用与实现
2017/05/07 Javascript
React-router v4 路由配置方法小结
2017/08/08 Javascript
关于Ajax的原理以及代码封装详解
2017/09/08 Javascript
vue 插值 v-once,v-text, v-html详解
2018/01/19 Javascript
详解vue中v-bind:style效果的自定义指令
2020/01/21 Javascript
vue实现页面切换滑动效果
2020/06/29 Javascript
python批量查询、汉字去重处理CSV文件
2018/05/31 Python
Django学习笔记之为Model添加Action
2019/04/30 Python
django一对多模型以及如何在前端实现详解
2019/07/24 Python
Django中reverse反转并且传递参数的方法
2019/08/06 Python
python 瀑布线指标编写实例
2020/06/03 Python
伦敦的高级牛仔布专家:Trilogy
2018/08/06 全球购物
Foreo国际站:Foreo International
2018/10/29 全球购物
运动会开幕式邀请函
2014/01/22 职场文书
北京大学自荐信范文
2014/01/28 职场文书
校园文化艺术节宣传标语
2014/10/09 职场文书
市委召开党的群众路线教育实践活动总结大会报告
2014/10/21 职场文书
工作态度不好检讨书
2015/05/06 职场文书
决心书格式及范文
2019/06/24 职场文书
浅谈MySQL 亿级数据分页的优化
2021/06/15 MySQL
高并发下Redis如何保持数据一致性(避免读后写)
2022/03/18 Redis
Golang 实现 WebSockets 之创建 WebSockets
2022/04/24 Golang