php怎么查看一个变量的占用内存

php怎么查看一个变量的占用内存php怎么查看一个变量的占用内存

大家好,又见面了,我是你们的朋友全栈君。

事例:
php版本为7.2
<?php
echo memory_get_usage() , '<br>';
$start = memory_get_usage();
$a = Array();
for ($i=0; $i<1000; $i++) { 
   
$a[$i] = $i + $i;
}
$mid = memory_get_usage();
echo memory_get_usage() , '<br>';
for ($i=1000; $i<2000; $i++) { 
   
$a[$i] = $i + $i;
}
$end = memory_get_usage();
echo memory_get_usage() , '<br>';
echo 'argv:', ($mid - $start)/1000 ,'bytes' , '<br>';
echo 'argv:',($end - $mid)/1000 ,'bytes' , '<br>';
echo 'Memory:', ($mid - $start)/1024 ,'k' , '<br>';
echo 'Memory:',($end - $mid)/1024 ,'k' , '<br>';
输出是:
389336
418056
442632
argv:28.72bytes
argv:24.576bytes
Memory:28.046875k
Memory:24k

返回当前分配给你的 PHP 脚本的内存量,单位是字节(byte)。

大概了解1000个元素的整数数组需要占用 28k 内存,平均每个元素占用 28 个字节

memory_get_usage() 返回的结果并不是全是被数组占用了,还要包括一些 PHP
运行本身分配的一些结构,可能用内置函数生成的数组更接近真实的空间:

<?php
$start = memory_get_usage();
$a = array_fill(0, 10000, 1);
$mid = memory_get_usage(); //10k elements array;
echo 'argv:', ($mid - $start )/10000,'byte' , '<br>';
echo 'Memory:', ($mid - $start)/1024 ,'k' , '<br>';
$b = array_fill(0, 10000, 1);
$end = memory_get_usage(); //10k elements array;
echo 'argv:', ($end - $mid)/10000 ,'byte' , '<br>';
echo 'Memory:',($end - $mid)/1024 ,'k' , '<br>';
得到:
argv:54.5792byte
argv:54.5784byte

argv:39.736byte
Memory:388.046875k
argv:39.736byte
Memory:388.046875k

大概了解10000个元素的整数数组需要占用 388k 内存 ,从这个结果来看似乎一个数组元素大约占用了39个字节左右。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/105870.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • 小白菜飘过计算机三级数据库[通俗易懂]

    小白菜飘过计算机三级数据库[通俗易懂]害,是真的没学啥没东西写了买书呜呜47大题归纳填空题46大题好久没更新了,害,把之前的三级数据库笔记录下来吧(强行刷存在感)计算机三级数据库也及格分佛佛的过了,虽然没学过但是机械刷题找规律还是勉强混过去了之前和朋友一起考感觉三级数据库的资料好少我还想说好好总结一波,刚考完还是很新鲜的但是不晓得能不能过…就没记录最新鲜的想法…等到出成绩我也忘得干干净净了…最近超级能逼逼叨,没想到写个CSDN…

  • SQL语句存储过程实例详解(面试宝典)「建议收藏」

    SQL语句存储过程实例详解(面试宝典)「建议收藏」本文用3个题目,从建立数据库到创建存储过程,详细讲解数据库的功能。这个问题面试的时候也是经常会用到的,比如写sql语句。题目1学校图书馆借书信息管理系统建立三个表:学生信息表:student字段名称数据类型说明stuIDchar(10)学生编号,主键stuName

  • vue判断字符串是否含有另一个字符串_js中判断是否包含某个字符串

    vue判断字符串是否含有另一个字符串_js中判断是否包含某个字符串String对象的方法1.indexOf()indexOf()方法可返回某个指定的字符串值在字符串中首次出现的位置。如果要检索的字符串值没有出现,则该方法返回-1。varstr=’你好啊双11!’;console.log(str.indexOf(‘!’)!=-1)//true2.search()search()方法用于检索字符串中指定的子字符串,或检索与正则表达式相匹配的子字…

  • 射灯怎么安装图解_牛眼灯安装图解法

    射灯怎么安装图解_牛眼灯安装图解法炫派照明多光色晶元芯片LED轨道灯,静音风扇智能散热,风神Ⅱ导轨射灯智能散热导轨射灯风神Ⅱ灯体支架高碳钢材质,连接牢固不易滑落,360度旋转顺畅,全方位调节照射角度,感受无死角的光线触感。与灯体主色彩射灯安装图示融为一体,统一的美感低调的华贵,烤漆漆皮带来舒适光滑的质感,使整个射灯看起来精致完美。雷士照明LED家居客厅轨道射灯,电视背景照明灯,TLN204黑白双色家居黑白轨道射灯雷士照明轨道射灯椭…

    2022年10月23日
  • Linux tar 打包[通俗易懂]

    Linux tar 打包[通俗易懂]转载:https://www.cnblogs.com/lijc1990/p/3545503.html范例一:将整个/etc目录下的文件全部打包成为/tmp/etc.tar[root@linux~]#tar-cvf/tmp/etc.tar/etc&lt;==仅打包,不压缩![root@linux~]#tar-zcvf/tmp/etc.tar.gz/etc&l…

  • 微信公众平台-微信服务号开发

    文章目录背景:一、微信各个平台介绍二、公众平台介绍三、开发前准备四、服务器配置五、服务器验证六、消息接收七、客服消息八、获取素材九、相关工具十、最终效果展示总结背景:近期接到了涉及微信开放平台和微信公众平台相关的开发需求,开发过程中踩了许多坑,把相关问题整理记录下来以便巩固记忆,并把总结的经验分享出来,本篇分享微信服务号开发,希望可以给大家提供帮助一、微信各个平台介绍1、微信开放平台:面向开发人员,为网站、App提供微信第三方登录功能,为App提供支付功能。2、微信公众平台:对应的是公众号,包括订

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号