如何获知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数组函数
Aug 18 PHP
fleaphp下不确定的多条件查询的巧妙解决方法
Sep 11 PHP
php去除换行符的方法小结(PHP_EOL变量的使用)
Feb 16 PHP
php解析url的三个示例
Jan 20 PHP
PHP中auto_prepend_file与auto_append_file用法实例分析
Sep 22 PHP
PHP缓存集成库phpFastCache用法
Dec 15 PHP
Joomla实现组件中弹出一个模式(modal)窗口的方法
May 04 PHP
php+html5+ajax实现上传图片的方法
May 14 PHP
PHP合并数组的2种方法小结
Nov 24 PHP
PHP将数据导出Excel表中的实例(投机型)
Jul 31 PHP
微信公众平台开发教程②微信端分享功能图文详解
Apr 10 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
php 高效率写法 推荐
2010/02/21 PHP
php实现MySQL数据库备份与还原类实例
2014/12/09 PHP
php发送html格式文本邮件的方法
2015/06/10 PHP
HTA版JSMin(省略修饰语若干)基于javascript语言编写
2009/12/24 Javascript
JavaScript setTimeout和setInterval的使用方法 说明
2010/03/25 Javascript
javascript手工制作悬浮菜单
2015/02/12 Javascript
javascript中DOM复选框选择用法实例
2015/05/14 Javascript
jQuery 特性操作详解及实例代码
2016/09/29 Javascript
jQuery插件HighCharts绘制2D带Label的折线图效果示例【附demo源码下载】
2017/03/08 Javascript
webpack引入eslint配置详解
2018/01/22 Javascript
微信小程序-form表单提交代码实例
2019/04/29 Javascript
vue 父组件通过v-model接收子组件的值的代码
2019/10/27 Javascript
Javascript数组及类数组相关原理详解
2020/10/29 Javascript
小程序实现点击tab切换左右滑动
2020/11/16 Javascript
vue实现树状表格效果
2020/12/29 Vue.js
[04:03]2014DOTA2西雅图国际邀请赛 LGD战队巡礼
2014/07/07 DOTA
使用url_helper简化Python中Django框架的url配置教程
2015/05/30 Python
Python中time模块和datetime模块的用法示例
2016/02/28 Python
剖析Python的Twisted框架的核心特性
2016/05/25 Python
利用Python抓取行政区划码的方法
2016/11/28 Python
python3 打印输出字典中特定的某个key的方法示例
2019/07/06 Python
对django后台admin下拉框进行过滤的实例
2019/07/26 Python
在python中使用pymysql往mysql数据库中插入(insert)数据实例
2020/03/02 Python
Python下载网易云歌单歌曲的示例代码
2020/08/12 Python
分享unittest单元测试框架中几种常用的用例加载方法
2020/12/02 Python
CSS3 不定高宽垂直水平居中的几种方式
2020/03/26 HTML / CSS
html5 http的轮询和Websocket原理
2018/10/19 HTML / CSS
惊艳的手工时装首饰:Migonne Gavigan
2018/02/23 全球购物
小学生演讲稿
2014/01/12 职场文书
公司司机岗位职责范本
2014/03/03 职场文书
投标授权委托书范文
2014/08/02 职场文书
论文答辩开场白大全
2015/05/27 职场文书
告知书格式
2015/07/01 职场文书
你为什么是穷人?可能是这5个缺点造成
2019/07/11 职场文书
Python爬取英雄联盟MSI直播间弹幕并生成词云图
2021/06/01 Python
使用python将HTML转换为PDF pdfkit包(wkhtmltopdf) 的使用方法
2022/04/21 Python