如何获知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页面缓存ob系列函数介绍
Oct 18 PHP
PHP加密扩展库Mcrypt安装和实例
Nov 10 PHP
基于PHP+jQuery+MySql实现红蓝(顶踩)投票代码
Aug 25 PHP
PHP实现基于mysqli的Model基类完整实例
Apr 08 PHP
Laravel4中的Validator验证扩展用法详解
Jul 26 PHP
通过php动态传数据到highcharts
Apr 05 PHP
详解PHP使用日期时间处理器Carbon人性化显示时间
Aug 10 PHP
PHP微信企业号开发之回调模式开启与用法示例
Nov 25 PHP
PHP智能识别收货地址信息实例
Jan 05 PHP
PHP消息队列实现及应用详解【队列处理订单系统和配送系统】
May 20 PHP
PHPUnit + Laravel单元测试常用技能
Nov 06 PHP
laravel通用化的CURD的实现
Dec 13 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
mysql limit查询优化分析
2008/11/12 PHP
JS异常处理try..catch语句的作用和实例
2014/05/05 PHP
VPS中使用LNMP安装WordPress教程
2014/12/28 PHP
php批量删除操作代码分享
2017/02/26 PHP
Javascript 判断函数类型完美解决方案
2009/09/02 Javascript
js模拟类继承小例子
2010/07/17 Javascript
JavaScript中“基本类型”之争小结
2013/01/03 Javascript
Javascript和HTML5利用canvas构建Web五子棋游戏实现算法
2013/07/17 Javascript
Google (Local) Search API的简单使用介绍
2013/11/28 Javascript
js对象转json数组的简单实现案例
2014/02/28 Javascript
jQuery监听浏览器窗口大小的变化实例
2017/02/07 Javascript
vue.js实现数据动态响应 Vue.set的简单应用
2017/06/15 Javascript
详解jQuery同步Ajax带来的UI线程阻塞问题及解决办法
2017/08/09 jQuery
Angular CLI在Angular项目中如何使用scss详解
2018/04/10 Javascript
使用vue打包时vendor文件过大或者是app.js文件很大的问题
2018/06/29 Javascript
在vue项目中使用md5加密的方法
2018/09/14 Javascript
JS工厂模式开发实践案例分析
2019/10/17 Javascript
浅谈Vue中render中的h箭头函数
2019/11/07 Javascript
微信小程序基于movable-view实现滑动删除效果
2020/01/08 Javascript
Vue跨域请求问题解决方案过程解析
2020/08/07 Javascript
JS如何判断对象是否包含某个属性
2020/08/29 Javascript
python实现排序算法
2014/02/14 Python
基于python时间处理方法(详解)
2017/08/14 Python
pandas or sql计算前后两行数据间的增值方法
2018/04/20 Python
python 消费 kafka 数据教程
2019/12/21 Python
Django DRF认证组件流程实现原理详解
2020/08/17 Python
浅析NumPy 切片和索引
2020/09/02 Python
美国综合购物商城:UnbeatableSale.com
2018/11/28 全球购物
宿舍卫生检讨书
2014/01/16 职场文书
大学生党员自我批评
2014/02/14 职场文书
扩大国家免疫规划实施方案
2014/03/21 职场文书
珍爱生命演讲稿
2014/05/10 职场文书
材料专业大学毕业生自荐书
2014/07/02 职场文书
美术专业自荐信
2014/07/07 职场文书
房屋租赁委托书范本
2014/10/04 职场文书
Python机器学习应用之工业蒸汽数据分析篇详解
2022/01/18 Python