PHP通过内置函数memory_get_usage()获取内存使用情况


Posted in PHP onNovember 20, 2014

PHP内置函数memory_get_usage()能返回当前分配给PHP脚本的内存量,单位是字节(byte)。在WEB实际开发中,这些函数非常有用,我们可以使用它来调试PHP代码性能。
memory_get_usage()函数返回内存使用量,memory_get_peak_usage()函数返回内存使用峰值,getrusage()返回CUP使用情况。但有一点请注意,在这些函数需要在Linux上运行。
下面我们来看一个实例:

echo '开始内存:'.memory_get_usage(), ''; 

$tmp = str_repeat('hello', 1000);   

echo '运行后内存:'.memory_get_usage(), '';  

unset($tmp);   

echo '回到正常内存:'.memory_get_usage();

输出结果:

开始内存:147296 

运行后内存:152456 

回到正常内存:147296

例子中,我们使用str_repeat()将字符串“hello”重复了1000遍,最终来对比前后消耗的内存大小。由上面的例子可以看出,要想减少内存的占用,可以使用unset() 函数把不再需要使用的变量删除。类似还有mysql_free_result() 函数,当我们不再需要查询数据得到的结果集时,可以使用释放查询占用的内存。
函数memory_get_usage()还可以有个参数,$real_usage,其值为布尔值。如果设置为 TRUE,获取系统分配的真实内存尺寸。如果未设置或者设置为 FALSE,将是 emalloc() 报告使用的内存量。
在实际WEB开发中,可以用PHP memory_get_usage()比较各个方法占用内存的高低,来选择使用哪种占用内存小的方法。
函数memory_get_usage()返回的字节数(单位为 byte(s))。下面这个自定义函数将字节数转换成MB更容易阅读:

function memory_usage() { 

    $memory     = ( ! function_exists('memory_get_usage')) ? '0' : round(memory_get_usage()/1024/1024, 2).'MB'; 

    return $memory; 

}

常用的调试检测PHP代码性能的方法有:
memory_get_usage可以分析内存占用空间。
用microtime函数就可以分析程序执行时间。

以上就是使用memory_get_usage获取php代码占用内存的全部内容了,本函数十分的高效,有需要的小伙伴可以参考下

PHP 相关文章推荐
使用PHP获取网络文件的实现代码
Jan 01 PHP
php excel类 phpExcel使用方法介绍
Aug 21 PHP
php的一个简单加密解密代码
Jan 14 PHP
PHP文件大小格式化函数合集
Mar 10 PHP
php删除指定目录的方法
Apr 03 PHP
php开发中的页面跳转方法总结
Apr 26 PHP
Yii CDBCriteria常用方法实例小结
Jan 19 PHP
PHP排序二叉树基本功能实现方法示例
May 26 PHP
PHP设计模式之观察者模式定义与用法示例
Aug 04 PHP
PHP封装cURL工具类与应用示例
Jul 01 PHP
Laravel 自动生成验证的实例讲解:login / logout
Oct 14 PHP
Laravel (Lumen) 解决JWT-Auth刷新token的问题
Oct 24 PHP
IIS下PHP的三种配置方式对比
Nov 20 #PHP
PHP程序员常见的40个陋习,你中了几个?
Nov 20 #PHP
php目录遍历函数opendir用法实例
Nov 20 #PHP
php中base_convert()进制数字转换函数实例
Nov 20 #PHP
PHP PDOStatement对象bindpram()、bindvalue()和bindcolumn之间的区别
Nov 20 #PHP
PDO预处理语句PDOStatement对象使用总结
Nov 20 #PHP
php中ob_get_length缓冲与获取缓冲长度实例
Nov 20 #PHP
You might like
PHP判断表达式中括号是否匹配的简单实例
2016/10/22 PHP
给Flash加一个超链接(推荐使用透明层)兼容主流浏览器
2013/06/09 Javascript
javascript自动切换焦点控制效果完整实例
2016/02/02 Javascript
微信小程序学习之数据处理详解
2017/07/05 Javascript
d3.js实现自定义多y轴折线图的示例代码
2018/05/30 Javascript
vue-router路由懒加载的实现(解决vue项目首次加载慢)
2018/08/28 Javascript
mpvue实现左侧导航与右侧内容的联动
2019/10/21 Javascript
vue实现给div绑定keyup的enter事件
2020/07/31 Javascript
Node.js web 应用如何封装到Docker容器中
2020/09/01 Javascript
vue mvvm数据响应实现
2020/11/11 Javascript
[09:37]2018DOTA2国际邀请赛寻真——不懈追梦的Team Serenity
2018/08/13 DOTA
python中的yield使用方法
2014/02/11 Python
python使用Berkeley DB数据库实例
2014/09/26 Python
django反向解析URL和URL命名空间的方法
2018/06/05 Python
解决Python pandas df 写入excel 出现的问题
2018/07/04 Python
浅谈python实现Google翻译PDF,解决换行的问题
2018/11/28 Python
python按照多个条件排序的方法
2019/02/08 Python
Python中PyQt5/PySide2的按钮控件使用实例
2019/08/17 Python
解决tensorflow添加ptb库的问题
2020/02/10 Python
python批量替换文件名中的共同字符实例
2020/03/05 Python
Python GUI编程学习笔记之tkinter控件的介绍及基本使用方法详解
2020/03/30 Python
Python高并发和多线程有什么关系
2020/11/14 Python
Web前端页面跳转并取到值
2017/04/24 HTML / CSS
Fenty Beauty官网:蕾哈娜创立的美妆品牌
2021/01/07 全球购物
怎样客观的做好自我评价
2013/12/28 职场文书
护士自我评价
2014/02/01 职场文书
个人借款担保书
2014/04/02 职场文书
安全生产一岗双责责任书
2014/07/28 职场文书
竞聘演讲稿怎么写
2014/08/28 职场文书
乡镇干部个人整改措施思想汇报
2014/10/10 职场文书
学习党的群众路线教育实践活动心得体会范文
2014/11/03 职场文书
幼儿园老师新年寄语2015
2014/12/08 职场文书
二年级语文上册复习计划
2015/01/19 职场文书
教师远程研修感悟
2015/11/18 职场文书
MySQL系列之十三 MySQL的复制
2021/07/02 MySQL
JAVA 线程池(池化技术)的实现原理
2022/04/28 Java/Android