如何获知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实现的获取网页中的图片并保存到本地的代码
Jan 05 PHP
解析CI即CodeIgniter框架在Nginx下的重写规则
Jun 03 PHP
PHP图片自动裁切应付不同尺寸的显示
Oct 16 PHP
CI框架入门示例之数据库取数据完整实现方法
Nov 05 PHP
php正则匹配html中带class的div并选取其中内容的方法
Jan 13 PHP
ThinkPHP、ZF2、Yaf、Laravel框架路由大比拼
Mar 25 PHP
十个PHP高级应用技巧果断收藏
Sep 25 PHP
php视频拍照上传头像功能实现代码分享
Oct 08 PHP
php上传图片并压缩的实现方法
Dec 22 PHP
Yii2简单实现多语言配置的方法
Jul 23 PHP
Yii2框架BootStrap样式的深入理解
Nov 07 PHP
PHPExcel 修改已存在Excel的方法
May 03 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
ThinkPHP3.1新特性之动态设置自动完成和自动验证示例
2014/06/19 PHP
php读取mssql的ntext字段返回值为空的解决方法
2014/12/30 PHP
给ECShop添加最新评论
2015/01/07 PHP
Laravel实现表单提交
2017/05/07 PHP
在php的yii2框架中整合hbase库的方法
2018/09/20 PHP
php使用filter_var函数判断邮箱,url,ip格式示例
2019/07/06 PHP
超酷的网页音乐播放器DewPlayer使用方法
2010/12/18 Javascript
Extjs gridpanel 出现横向滚动条问题的解决方法
2011/07/04 Javascript
Jquery实现侧边栏跟随滚动条固定(兼容IE6)
2014/04/02 Javascript
Jquery实现兼容各大浏览器的Enter回车切换输入焦点的方法
2014/09/01 Javascript
javascript获取flash版本号的方法
2014/11/20 Javascript
javascript中定义类的方法详解
2015/02/10 Javascript
浅谈JavaScript的事件
2015/02/27 Javascript
jquery实现弹窗功能(窗口居中显示)
2017/02/27 Javascript
vue图片加载与显示默认图片实例代码
2017/03/16 Javascript
简单谈谈js的数据类型
2017/09/25 Javascript
JS中利用FileReader实现上传图片前本地预览功能
2018/03/02 Javascript
vue+element的表格实现批量删除功能示例代码
2018/08/17 Javascript
介绍Python中的文档测试模块
2015/04/28 Python
Python内置的HTTP协议服务器SimpleHTTPServer使用指南
2016/03/30 Python
windows下python连接oracle数据库
2017/06/07 Python
Python 实现Windows开机运行某软件的方法
2018/10/14 Python
python networkx 根据图的权重画图实现
2019/07/10 Python
django项目用higcharts统计最近七天文章点击量
2019/08/17 Python
python中的 zip函数详解及用法举例
2020/02/16 Python
解决pycharm中opencv-python导入cv2后无法自动补全的问题(不用作任何文件上的修改)
2020/03/05 Python
用CSS3打造HTML5的Logo(实现代码)
2016/06/16 HTML / CSS
HTML5实现分享到微信好友朋友圈QQ好友QQ空间微博二维码功能
2018/01/03 HTML / CSS
欧洲著名的二手奢侈品网站:Vestiaire Collective
2020/03/07 全球购物
《和我们一样享受春天》教学反思
2014/02/07 职场文书
2014年人事工作总结范文
2014/11/19 职场文书
红十字会救护培训简讯
2015/07/20 职场文书
护士爱岗敬业心得体会
2016/01/25 职场文书
全家福照片寄语怎么写?
2019/04/02 职场文书
2019年世界儿童日宣传标语
2019/11/22 职场文书
go语言中fallthrough的用法说明
2021/05/06 Golang