如何获知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 相关文章推荐
PHP入门速成(2)
Oct 09 PHP
php下几个常用的去空、分组、调试数组函数
Feb 22 PHP
php xml留言板 xml存储数据的简单例子
Aug 24 PHP
fleaphp rolesNameField bug解决方法
Apr 23 PHP
PHP 处理TXT文件(打开/关闭/检查/读取)
May 13 PHP
PHP提示Deprecated: mysql_connect(): The mysql extension is deprecated的解决方法
Aug 28 PHP
PHP批量去除BOM头代码分享
Jun 26 PHP
PHP人民币金额转大写实例代码
Oct 02 PHP
PHP中对数组的一些常用的增、删、插操作函数总结
Nov 27 PHP
解析WordPress中控制用户登陆和判断用户登陆的PHP函数
Mar 01 PHP
CI框架封装的常用图像处理方法(缩略图,水印,旋转,上传等)
Nov 22 PHP
利用PHP抓取百度阅读的方法示例
Dec 18 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
BBS(php &amp; mysql)完整版(一)
2006/10/09 PHP
PHP的FTP学习(三)
2006/10/09 PHP
服务器web工具 php环境下
2010/12/29 PHP
php中time()与$_SERVER[REQUEST_TIME]用法区别
2014/11/19 PHP
Zend Framework教程之MVC框架的Controller用法分析
2016/03/07 PHP
Javascript和Java获取各种form表单信息的简单实例
2014/02/14 Javascript
js设置function参数默认值(适合没有传参情况)
2014/02/24 Javascript
jQuery Mobile中的button按钮组件基础使用教程
2016/05/23 Javascript
javascript用正则表达式过滤空格的实现代码
2016/06/14 Javascript
vue.js表格组件开发的实例详解
2016/10/12 Javascript
解析ajaxFileUpload 异步上传文件简单使用
2016/12/30 Javascript
JS中如何实现点击a标签返回页面顶部的问题
2017/01/19 Javascript
bootstrap 设置checkbox部分选中效果
2017/04/20 Javascript
jQuery Jsonp跨域模拟搜索引擎
2017/06/17 jQuery
javascript  删除select中的所有option的实例
2017/09/17 Javascript
微信小程序js文件改变参数并在视图上及时更新【推荐】
2018/06/11 Javascript
vue 解决computed修改data数据的问题
2019/11/06 Javascript
通过数据库向Django模型添加字段的示例
2015/07/21 Python
Python实现登录接口的示例代码
2017/07/21 Python
通过python+selenium3实现浏览器刷简书文章阅读量
2017/12/26 Python
攻击者是如何将PHP Phar包伪装成图像以绕过文件类型检测的(推荐)
2018/10/11 Python
Python3解释器知识点总结
2019/02/19 Python
Python3.5装饰器原理及应用实例详解
2019/04/30 Python
selenium+python环境配置教程详解
2019/05/28 Python
在Django的View中使用asyncio的方法
2019/07/12 Python
Python生成个性签名图片获取GUI过程解析
2019/12/16 Python
使用OpenCV实现人脸图像卡通化的示例代码
2021/01/15 Python
python实现发送邮件
2021/03/02 Python
美国在线健康和美容市场:Pharmapacks
2018/12/05 全球购物
英语专业毕业生自荐信范文
2013/12/31 职场文书
放飞蜻蜓反思
2014/02/05 职场文书
幼教求职信
2014/03/12 职场文书
大学生就业自荐书
2014/06/16 职场文书
2014国庆节商场促销活动策划方案
2014/09/16 职场文书
张丽莉事迹观后感
2015/06/16 职场文书
2016年党员干部公开承诺书
2016/03/24 职场文书