如何获知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 来访国内外IP判断代码并实现页面跳转
Dec 18 PHP
PHP类的使用 实例代码讲解
Dec 28 PHP
基于Windows下Apache PHP5.3.1安装教程
Jan 08 PHP
php数组对百万数据进行排除重复数据的实现代码
Jun 08 PHP
Could not load type System.ServiceModel.Activation.HttpModule解决办法
Dec 29 PHP
php class中self,parent,this的区别以及实例介绍
Apr 24 PHP
使用PHP Socket写的POP3类
Oct 30 PHP
PHP的引用详解
Feb 22 PHP
php使用Jpgraph创建折线图效果示例
Feb 15 PHP
在php7中MongoDB实现模糊查询的方法详解
May 03 PHP
PHP+swoole+linux实现系统监控和性能优化操作示例
Apr 15 PHP
PHP实现获取文件mime类型多种方法解析
May 28 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
JavaScript 高级语法介绍
2009/06/15 Javascript
boxy基于jquery的弹出层对话框插件扩展应用 弹出层选择器
2010/11/21 Javascript
JSON.stringify 语法实例讲解
2012/03/14 Javascript
JS实现无限级网页折叠菜单(类似树形菜单)效果代码
2015/09/17 Javascript
jQuery插件HighCharts绘制简单2D柱状图效果示例【附demo源码】
2017/03/21 jQuery
js学习心得_一个简单的动画库封装tween.js
2017/07/14 Javascript
全选复选框JavaScript编写小结(附代码)
2017/08/16 Javascript
详解基于webpack2.x的vue2.x的多页面站点
2017/08/21 Javascript
分分钟学会vue中vuex的应用(入门教程)
2017/09/14 Javascript
JavaScript数据结构与算法之队列原理与用法实例详解
2017/11/22 Javascript
关于Google发布的JavaScript代码规范你要知道哪些
2018/04/04 Javascript
mpvue实现左侧导航与右侧内容的联动
2019/10/21 Javascript
[03:09]显微镜下的DOTA2第一期——带你走进华丽的DOTA2世界
2014/06/20 DOTA
Python编程中对文件和存储器的读写示例
2016/01/25 Python
对比Python中__getattr__和 __getattribute__获取属性的用法
2016/06/21 Python
Python 3中的yield from语法详解
2017/01/18 Python
Python返回数组/List长度的实例
2018/06/23 Python
Python中 map()函数的用法详解
2018/07/10 Python
python查看模块安装位置的方法
2018/10/16 Python
django中ORM模型常用的字段的使用方法
2019/03/05 Python
Python读取excel文件中带公式的值的实现
2020/04/17 Python
使用OpenCV获取图像某点的颜色值,并设置某点的颜色
2020/06/02 Python
CSMA/CD介质访问控制协议
2015/11/17 面试题
介绍下Lucene建立索引的过程
2016/03/02 面试题
正隆泰信息技术有限公司上机题
2012/06/14 面试题
体育专业学生自我评价范文
2014/01/17 职场文书
《沙漠中的绿洲》教学反思
2014/04/24 职场文书
跳槽求职信范文
2014/05/26 职场文书
个人收入证明模板
2014/09/18 职场文书
党员四风自我剖析材料
2014/10/07 职场文书
岗位职责范本大全
2015/02/26 职场文书
2015年党风廉政建设目标责任书
2015/05/08 职场文书
一文弄懂MySQL中redo log与binlog的区别
2022/02/15 MySQL
vue实现省市区联动 element-china-area-data插件
2022/04/22 Vue.js
mysql 体系结构和存储引擎介绍
2022/05/06 MySQL
Go语言编译原理之源码调试
2022/08/05 Golang