深入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 在文件指定行插入数据的代码
May 08 PHP
php以post形式发送xml的方法
Nov 04 PHP
php实现的网络相册图片防盗链完美破解方法
Jul 01 PHP
php提取身份证号码中的生日日期以及验证是否为成年人的函数
Sep 29 PHP
php 使用curl模拟登录人人(校内)网的简单实例
Jun 06 PHP
Yii+MYSQL锁表防止并发情况下重复数据的方法
Jul 14 PHP
php mysql实现mysql_select_db选择数据库
Dec 30 PHP
PHP中函数gzuncompress无法使用的解决方法
Mar 02 PHP
PHP实现的多维数组去重操作示例
Jul 21 PHP
PHP登录验证功能示例【用户名、密码、验证码、数据库、已登陆验证、自动登录和注销登录等】
Feb 25 PHP
PHP压缩图片功能的介绍
Mar 21 PHP
PHP中迭代器的简单实现及Yii框架中的迭代器实现方法示例
Apr 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
php实现的CSS更新类实例
2014/09/22 PHP
PHP树-不需要递归的实现方法
2016/06/21 PHP
PHP中ID设置自增后不连续的原因分析及解决办法
2016/08/21 PHP
PHP基本语法实例总结
2016/09/09 PHP
PHP面向对象五大原则之里氏替换原则(LSP)详解
2018/04/08 PHP
PHP使用反向Ajax技术实现在线客服系统详解
2019/07/01 PHP
Javascript 中的 &amp;&amp; 和 || 使用小结
2010/04/25 Javascript
jQuery UI Autocomplete 体验分享
2012/02/14 Javascript
javascript模拟实现ajax加载框实例
2014/10/15 Javascript
js模仿java的Map集合详解
2016/01/06 Javascript
Bootstrap 3浏览器兼容性问题及解决方案
2017/04/11 Javascript
Vue单文件组件的如何使用方式介绍
2017/07/28 Javascript
js基于FileSaver.js 浏览器导出Excel文件的示例
2017/08/15 Javascript
VsCode新建VueJs项目的详细步骤
2017/09/23 Javascript
JS实现的简单表单验证功能示例
2017/10/13 Javascript
详解如何用typescript开发koa2的二三事
2018/11/13 Javascript
javascript中call,apply,callee,caller用法实例分析
2019/07/24 Javascript
JS实现json数组排序操作实例分析
2019/10/28 Javascript
vue实现简单的登录弹出框
2020/10/26 Javascript
微信小程序自定义底部弹出框动画
2020/11/18 Javascript
[02:42]DOTA2城市挑战赛收官在即 四强之争风起云涌
2018/06/05 DOTA
python之yield表达式学习
2014/09/02 Python
Python基于scrapy采集数据时使用代理服务器的方法
2015/04/16 Python
Python计算字符宽度的方法
2016/06/14 Python
python数据分析数据标准化及离散化详解
2018/02/26 Python
python如何把嵌套列表转变成普通列表
2018/03/20 Python
解决PyCharm import torch包失败的问题
2018/10/13 Python
pytorch中tensor张量数据类型的转化方式
2019/12/31 Python
Python安装tar.gz格式文件方法详解
2020/01/19 Python
pyMySQL SQL语句传参问题,单个参数或多个参数说明
2020/06/06 Python
css3之UI元素状态伪类选择器实例演示
2017/08/11 HTML / CSS
css3的focus-within选择器的使用
2020/05/11 HTML / CSS
综合实践活动方案
2014/02/14 职场文书
行政主管岗位职责
2015/02/03 职场文书
先进个人主要事迹范文
2015/11/04 职场文书
2016年教师师德师风心得体会
2016/01/12 职场文书