如何获知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 相关文章推荐
对盗链说再见...
Oct 09 PHP
PHP实现异步调用方法研究与分享
Oct 27 PHP
解析php session_set_save_handler 函数的用法(mysql)
Jun 29 PHP
PHP实现单例模式最安全的做法
Jun 13 PHP
php相对当前文件include其它文件的方法
Mar 13 PHP
jquery获取多个checkbox的值异步提交给php的方法
Jun 24 PHP
PHP实现的json类实例
Jul 28 PHP
PHP实现简单实用的分页类代码
Apr 08 PHP
PHP获取IP地址所在地信息的实例(使用纯真IP数据库qqwry.dat)
Nov 15 PHP
Laravel中前端js上传图片到七牛云的示例代码
Sep 04 PHP
safari下载文件自动加了html后缀问题
Nov 09 PHP
PHP文件打开关闭及读写操作示例解析
Aug 06 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
网站当前的在线人数
2006/10/09 PHP
php相当简单的分页类
2008/10/02 PHP
preg_match_all使用心得分享
2014/01/31 PHP
php实现session自定义会话处理器的方法
2015/01/27 PHP
PHP的Yii框架中行为的定义与绑定方法讲解
2016/03/18 PHP
php实现在站点里面添加邮件发送的功能
2020/04/28 PHP
很全的显示阴历(农历)日期的js代码
2009/01/01 Javascript
event.X和event.clientX的区别分析
2011/10/06 Javascript
在页面加载完成后通过jquery给多个span赋值
2014/05/21 Javascript
jQuery获取节点和子节点文本的方法
2014/07/22 Javascript
js函数与php函数的区别实例浅析
2015/01/12 Javascript
ajax+jQuery实现级联显示地址的方法
2015/05/06 Javascript
socket.io实现在线群聊功能
2017/04/07 Javascript
vue 计时器组件的实现代码
2017/09/14 Javascript
Node.js学习教程之HTTP/2服务器推送【译】
2017/10/31 Javascript
es6新特性之 class 基本用法解析
2018/05/05 Javascript
Angular 实现输入框中显示文章标签的实例代码
2018/11/07 Javascript
Vue.js暴露方法给WebView的使用操作
2020/09/07 Javascript
[33:42]LGD vs OG 2018国际邀请赛小组赛BO2 第一场 8.16
2018/08/17 DOTA
Python 使用requests模块发送GET和POST请求的实现代码
2016/09/21 Python
django1.8使用表单上传文件的实现方法
2016/11/04 Python
django+js+ajax实现刷新页面的方法
2017/05/22 Python
Python操作MongoDb数据库流程详解
2020/03/05 Python
解析pip安装第三方库但PyCharm中却无法识别的问题及PyCharm安装第三方库的方法教程
2020/03/10 Python
keras实现多GPU或指定GPU的使用介绍
2020/06/17 Python
解决tensorflow读取本地MNITS_data失败的原因
2020/06/22 Python
CSS3 2D模拟实现摩天轮旋转效果
2016/11/16 HTML / CSS
英国高街奥特莱斯:Highstreet Outlet
2019/11/21 全球购物
Set里的元素是不能重复的,那么用什么方法来区分重复与否呢?
2016/08/18 面试题
客服实习的个人自我鉴定
2013/10/20 职场文书
普通大学毕业生自荐信
2013/11/04 职场文书
校园门卫岗位职责
2013/12/09 职场文书
趣味运动会活动方案
2014/02/12 职场文书
2014最新版群众路线四风整改措施
2014/09/24 职场文书
授权委托书怎么写
2014/09/25 职场文书
修改并编译golang源码的操作步骤
2021/07/25 Golang