如何获知PHP程序占用多少内存(memory_get_usage)


Posted in PHP onSeptember 23, 2012

下面是使用示例:

<?php 
echo memory_get_usage(), '<br />'; // 313864 
$tmp = str_repeat('http://www.nowamagic.net/', 4000); 
echo memory_get_usage(), '<br />'; // 406048 
unset($tmp); 
echo memory_get_usage(); // 313952 
?>

上面的程序后面的注释代表了它们的输出(单位为 byte(s)),也就是当时 PHP 脚本使用的内存(不含 memory_get_usage() 函数本身占用的内存)。

由上面的例子可以看出,要想减少内存的占用,可以使用 PHP unset() 函数把不再需要使用的变量删除。类似的还有:PHP mysql_free_result() 函数,可以清空不再需要的查询数据库得到的结果集,这样也能得到更多可用内存。

PHP memory_get_usage() 函数还可以有个参数,$real_usage,其值为布尔值。默认为 FALSE,表示得到的内存使用量不包括该函数(PHP 内存管理器)占用的内存;当设置为 TRUE 时,得到的内存为不包括该函数(PHP 内存管理器)占用的内存。

所以在实际编程中,可以用 memory_get_usage() 函数比较各个方法占用内存的高低,来选择使用哪种占用内存小的方法。

贴个使用函数:

if (!function_exists('memory_get_usage')) 
{ 
/** 
+---------------------------------------------------------- 
* 取得内存使用情况 
+---------------------------------------------------------- 
* @return integer 
+---------------------------------------------------------- 
*/ 
function memory_get_usage() 
{ 
$pid = getmypid(); 
if (IS_WIN) 
{ 
exec('tasklist /FI "PID eq ' . $pid . '" /FO LIST', $output); 
return preg_replace('/[^0-9]/', '', $output[5]) * 1024; 
} 
else 
{ 
exec("ps -eo%mem,rss,pid | grep $pid", $output); 
$output = explode(" ", $output[0]); 
return $output[1] * 1024; 
} 
} 
}

再来个函数使用例子:
<?php 
//memory_get_usage(); 
$m1 = memory_get_usage(); 
echo '<br /> m1:',$m1;//58096 
$a = 'hello'; 
$b = str_repeat($a,1000); 
$m2 = memory_get_usage(); 
echo '<br /> m2:',$m2;//63424 
unset($b); 
$m3 = memory_get_usage(); 
echo '<br /> m3:',$m3;//58456 
?>
PHP 相关文章推荐
使用MaxMind 根据IP地址对访问者定位
Oct 09 PHP
PHP开发文件系统实例讲解
Oct 09 PHP
php 文件缓存函数
Oct 08 PHP
PHP屏蔽蜘蛛访问代码及常用搜索引擎的HTTP_USER_AGENT
Mar 06 PHP
深入PHP5中的魔术方法详解
Jun 17 PHP
thinkPHP实现瀑布流的方法
Nov 29 PHP
详解php的socket通信
Aug 11 PHP
thinkPHP删除前弹出确认框的简单实现方法
May 16 PHP
PHP命令行执行整合pathinfo模拟定时任务实例
Aug 12 PHP
PHP实现图的邻接矩阵表示及几种简单遍历算法分析
Nov 24 PHP
php校验公钥是否可用的实例方法
Sep 17 PHP
再谈Yii Framework框架中的事件event原理与应用
Apr 07 PHP
PHP管理内存函数 memory_get_usage()使用介绍
Sep 23 #PHP
查找mysql字段中固定字符串并替换的几个方法
Sep 23 #PHP
php获取ip的三个属性区别介绍(HTTP_X_FORWARDED_FOR,HTTP_VIA,REMOTE_ADDR)
Sep 23 #PHP
PHP分多步骤填写发布信息的简单方法实例代码
Sep 23 #PHP
PHP 中关于ord($str)&amp;gt;0x80的详细说明
Sep 23 #PHP
PHP+MySQL投票系统的设计和实现分享
Sep 23 #PHP
详解php的魔术方法__get()和__set()使用介绍
Sep 19 #PHP
You might like
动漫定律:眯眯眼都是怪物!这些角色狠话不多~
2020/03/03 日漫
PHP时间戳使用实例代码
2008/06/07 PHP
ThinkPHP访问不存在的模块跳转到404页面的方法
2014/06/19 PHP
php版微信小店调用api示例代码
2016/11/12 PHP
一段效率很高的for循环语句使用方法
2007/08/13 Javascript
IE8对JS通过属性和数组遍历解析不一样的地方探讨
2013/05/06 Javascript
jquery判断浏览器后退时候弹出消息的方法
2014/08/11 Javascript
node.js中的fs.lchmod方法使用说明
2014/12/16 Javascript
HTML5之WebSocket入门3 -通信模型socket.io
2015/08/21 Javascript
JS实现从顶部下拉显示的带动画QQ客服特效代码
2015/10/24 Javascript
JavaScript闭包实例详解
2016/06/03 Javascript
AngularJS过滤器filter用法实例分析
2016/11/04 Javascript
AngularJs验证重复密码的方法(两种)
2016/11/25 Javascript
基于Bootstrap框架实现图片切换
2017/03/10 Javascript
150行Node.js实现的dns代理工具
2019/08/02 Javascript
javascript实现简易的计算器
2020/01/17 Javascript
[05:00]第二届DOTA2亚洲邀请赛主赛事第三天比赛集锦.mp4
2017/04/04 DOTA
python PIL模块与随机生成中文验证码
2016/02/27 Python
python实现图片处理和特征提取详解
2017/11/13 Python
Python文件循环写入行时防止覆盖的解决方法
2018/11/09 Python
在python中利用KNN实现对iris进行分类的方法
2018/12/11 Python
linux安装python修改默认python版本方法
2019/03/31 Python
python树的同构学习笔记
2019/09/14 Python
通过 Python 和 OpenCV 实现目标数量监控
2020/01/05 Python
Tensorflow--取tensorf指定列的操作方式
2020/06/30 Python
Python爬虫实战案例之爬取喜马拉雅音频数据详解
2020/12/07 Python
台湾线上百货零售购物平台:friDay购物
2017/08/18 全球购物
HTC VIVE美国官网:VR虚拟现实眼镜
2018/02/13 全球购物
澳大利亚领先的时尚内衣零售商:Bras N Things
2020/07/28 全球购物
《桃林那间小木屋》教学反思
2014/05/01 职场文书
英语自我介绍演讲稿
2014/09/01 职场文书
党小组评议意见
2015/06/02 职场文书
入伍志愿书怎么写?
2019/07/19 职场文书
简单且有用的Python数据分析和机器学习代码
2021/07/02 Python
MySQL系列之三 基础篇
2021/07/02 MySQL
VW、VH适配移动端的解决方案与常见问题
2023/05/21 HTML / CSS