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 相关文章推荐
利用Memcached在php下实现session机制 替换PHP的原生session支持
Aug 21 PHP
PHP 关于访问控制的和运算符优先级介绍
Jul 08 PHP
PHP使用正则表达式清除超链接文本
Nov 12 PHP
使用PHP备份MYSQL数据的多种方法
Jan 15 PHP
php实现的九九乘法口诀表简洁版
Jul 28 PHP
使用php转义输出HTML到JavaScript
Mar 27 PHP
php限制ip地址范围的方法
Mar 31 PHP
PHP实现自动识别原编码并对字符串进行编码转换的方法
Jul 13 PHP
php基于dom实现读取图书xml格式数据的方法
Feb 03 PHP
php删除数组指定元素实现代码
May 03 PHP
关于Laravel参数验证的一些疑与惑
Nov 19 PHP
Apache+PHP+MySQL搭建PHP开发环境图文教程
Aug 06 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
?生?D片??C字串
2006/12/06 PHP
php+ajax实时输入自动搜索匹配的方法
2014/12/26 PHP
Linux操作系统安装LAMP环境
2015/06/26 PHP
Nigma vs Alliance BO5 第五场2.14
2021/03/10 DOTA
JavaScript 实现??打印?理
2007/04/28 Javascript
使用自定义setTimeout和setInterval使之可以传递参数和对象参数
2009/04/24 Javascript
Jquery实现三层遍历删除功能代码
2013/04/23 Javascript
javascript中typeof的使用示例
2013/12/19 Javascript
javascript实现倒计时并弹窗提示特效
2015/06/05 Javascript
jQuery实现只允许输入数字和小数点的方法
2016/03/02 Javascript
jQuery获取table行数并输出单元格内容的实现方法
2016/06/30 Javascript
Angular.js中$apply()和$digest()的深入理解
2016/10/13 Javascript
基于bootstrap-datetimepicker.js不支持IE8的快速解决方法
2016/11/07 Javascript
整理关于Bootstrap模态弹出框的慕课笔记
2017/03/29 Javascript
Node.js Mongodb 密码特殊字符 @的解决方法
2017/04/11 Javascript
bootstrap模态框示例代码分享
2017/05/17 Javascript
解决Vue打包之后文件路径出错的问题
2018/03/06 Javascript
关于js的三种使用方式(行内js、内部js、外部js)的程序代码
2018/05/05 Javascript
vue中的自定义分页插件组件的示例
2018/08/18 Javascript
微信提示 在浏览器打开 效果实现过程解析
2019/09/10 Javascript
为nuxt项目写一个面包屑cli工具实现自动生成页面与面包屑配置
2019/09/29 Javascript
浅析Vue 防抖与节流的使用
2019/11/14 Javascript
[01:05:40]2014 DOTA2国际邀请赛中国区预选赛 5 23 CIS VS DT第三场
2014/05/24 DOTA
以Flask为例讲解Python的框架的使用方法
2015/04/29 Python
python实现自动更换ip的方法
2015/05/05 Python
Python实现的科学计算器功能示例
2017/08/04 Python
如何优雅地处理Django中的favicon.ico图标详解
2018/07/05 Python
Pycharm 实现下一个文件引用另外一个文件的方法
2019/01/17 Python
Django学习笔记之为Model添加Action
2019/04/30 Python
vue学习笔记之动态组件和v-once指令简单示例
2020/02/29 Python
django创建超级用户时指定添加其它字段方式
2020/05/14 Python
python字典key不能是可以是啥类型
2020/08/04 Python
英国最大的天然和有机产品在线零售商之一:Big Green Smile
2020/05/06 全球购物
请用Python写一个获取用户输入数字,并根据数字大小输出不同信息的脚本
2014/05/20 面试题
电子工程专业毕业生求职信
2014/03/14 职场文书
事业单位工作人员2015年度思想工作总结
2015/10/15 职场文书