php查看一个变量的占用内存的实例代码


Posted in PHP onMarch 29, 2020

事例:

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个字节左右。

内容补充

php获取变量所占内存大小的方法

$start_memory = memory_get_usage();
$foo = "Some variable";
echo memory_get_usage() - $start_memory;

这个可以获取所有变量类型的大小

strlen($foo) 这个可以获取当前字符串的字节大小 除以8就是位大小

到此这篇关于php查看一个变量的占用内存的实例代码的文章就介绍到这了,更多相关php怎么查看一个变量的占用内存内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

PHP 相关文章推荐
如何使用动态共享对象的模式来安装PHP
Oct 09 PHP
第4章 数据处理-php正则表达式-郑阿奇(续)
Jul 04 PHP
php判断变量类型常用方法
Apr 24 PHP
使用php测试硬盘写入速度示例
Jan 27 PHP
php返回字符串中所有单词的方法
Mar 09 PHP
PHP记录搜索引擎蜘蛛访问网站足迹的方法
Apr 15 PHP
PHP file_get_contents函数读取远程数据超时的解决方法
May 13 PHP
PHP中异常处理的一些方法整理
Jul 03 PHP
解读PHP的Yii框架中请求与响应的处理流程
Mar 17 PHP
PHP发送AT指令实例代码
May 26 PHP
php获取客户端IP及URL的方法示例
Feb 03 PHP
PHP扩展安装方法步骤解析
Nov 24 PHP
tp5框架前台无限极导航菜单类实现方法分析
Mar 29 #PHP
PHP中类与对象功能、用法实例解读
Mar 27 #PHP
php设计模式之职责链模式实例分析【星际争霸游戏案例】
Mar 27 #PHP
php设计模式之组合模式实例详解【星际争霸游戏案例】
Mar 27 #PHP
PhpStorm的使用教程(本地运行PHP+远程开发+快捷键)
Mar 26 #PHP
CentOS7系统搭建LAMP及更新PHP版本操作详解
Mar 26 #PHP
Centos7安装swoole扩展操作示例
Mar 26 #PHP
You might like
php获得当前的脚本网址
2007/12/10 PHP
PHP实现简易blog的制作
2016/10/24 PHP
laravel 数据迁移与 Eloquent ORM的实现方法
2019/04/12 PHP
Javascript实例教程(19) 使用HoTMetal(4)
2006/12/23 Javascript
JavaScript 动态将数字金额转化为中文大写金额
2009/05/14 Javascript
js prototype截取字符串函数
2010/04/01 Javascript
封装了一个支持匿名函数的Javascript事件监听器
2014/06/05 Javascript
WEB前端设计师常用工具集锦
2014/12/09 Javascript
三种Node.js写文件的方式
2016/03/08 Javascript
实用jquery操作表单元素的简单代码
2016/07/04 Javascript
js面向对象实现canvas制作彩虹球喷枪效果
2016/09/24 Javascript
微信小程序之picker日期和时间选择器
2017/02/09 Javascript
angular中的http拦截器Interceptors的实现
2017/02/21 Javascript
node-sass安装失败的原因与解决方法
2017/09/04 Javascript
Vue组件中slot的用法
2018/01/30 Javascript
JQuery模拟实现网页中自定义鼠标右键菜单功能
2018/11/14 jQuery
Element输入框带历史查询记录的实现示例
2019/01/15 Javascript
vue下使用nginx刷新页面404的问题解决
2019/08/02 Javascript
js实现的订阅发布者模式简单示例
2020/03/14 Javascript
[40:55]DOTA2上海特级锦标赛主赛事日 - 2 败者组第二轮#4Newbee VS Fnatic
2016/03/03 DOTA
[53:03]Optic vs TNC 2018国际邀请赛小组赛BO2 第一场 8.17
2018/08/18 DOTA
python之模拟鼠标键盘动作具体实现
2013/12/30 Python
python获取文件后缀名及批量更新目录下文件后缀名的方法
2014/11/11 Python
Python的Flask框架中集成CKeditor富文本编辑器的教程
2016/06/13 Python
python3+PyQt5实现文档打印功能
2018/04/24 Python
python 实现dict转json并保存文件
2019/12/05 Python
让IE支持HTML5的方法
2012/12/11 HTML / CSS
教师师德教育的自我评价
2013/10/31 职场文书
全国道德模范事迹
2014/02/01 职场文书
幼儿园新年寄语
2014/04/03 职场文书
信仰心得体会
2014/09/05 职场文书
个人总结与自我评价
2014/09/18 职场文书
学生实习证明模板汇总
2014/09/25 职场文书
重阳节慰问信
2015/02/15 职场文书
2015年女职工工作总结
2015/05/15 职场文书
Matplotlib绘制混淆矩阵的实现
2021/05/27 Python