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 数据库树的遍历方法
Feb 06 PHP
PHP 程序员的调试技术小结
Nov 15 PHP
PHP 动态随机生成验证码类代码
Apr 09 PHP
php源码加密 仿微盾PHP加密专家(PHPCodeLock)
May 06 PHP
使用PHP计算两个路径的相对路径
Jun 14 PHP
php操作mysql数据库的基本类代码
Feb 25 PHP
php表单请求获得数据求和示例
May 15 PHP
YII Framework框架教程之国际化实现方法
Mar 14 PHP
PHP模板引擎Smarty内置变量调解器用法详解
Apr 11 PHP
PHP读取word文档的方法分析【基于COM组件】
Aug 01 PHP
总结PHP内存释放以及垃圾回收
Mar 29 PHP
ThinkPHP类似AOP思想的参数验证的实现方法
Dec 18 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数组转成json格式的方法
2015/03/09 PHP
php使用ffmpeg获取视频信息并截图的实现方法
2016/05/03 PHP
再谈javascript图片预加载技术(详细演示)
2011/03/12 Javascript
jqGrid随窗口大小变化自适应大小的示例代码
2013/12/28 Javascript
JQuery实现表格动态增加行并对新行添加事件
2014/07/30 Javascript
js实现横向伸展开的二级导航菜单代码
2015/08/28 Javascript
基于jQuery全屏焦点图左右切换插件responsiveslides
2015/09/07 Javascript
JS+CSS实现六级网站导航主菜单效果
2015/09/28 Javascript
分享使用AngularJS创建应用的5个框架
2015/12/05 Javascript
js省市县三级联动效果实例
2020/04/15 Javascript
AngularJS基础 ng-include 指令简单示例
2016/08/01 Javascript
Vuejs第七篇之Vuejs过渡动画案例全面解析
2016/09/05 Javascript
JavaScript ES6中CLASS的使用详解
2016/11/22 Javascript
Angular.JS判断复选框checkbox是否选中并实时显示
2016/11/30 Javascript
vue实现点击选中,其他的不选中方法
2018/09/05 Javascript
webpack开发环境和生产环境的深入理解
2018/11/08 Javascript
微信小程序自定义单项选择器样式
2019/07/25 Javascript
vue使用一些外部插件及样式的配置代码
2019/11/18 Javascript
Python警察与小偷的实现之一客户端与服务端通信实例
2014/10/09 Python
Python实现针对中文排序的方法
2017/05/09 Python
Django的分页器实例(paginator)
2017/12/01 Python
Python面向对象类编写细节分析【类,方法,继承,超类,接口等】
2019/01/05 Python
Transpose 数组行列转置的限制方式
2020/02/11 Python
django中url映射规则和服务端响应顺序的实现
2020/04/02 Python
Python实现列表中非负数保留,负数转化为指定的数值方式
2020/06/04 Python
python实现canny边缘检测
2020/09/14 Python
使用pandas实现筛选出指定列值所对应的行
2020/12/13 Python
澳大利亚拥有最佳跳伞降落点和最好服务的跳伞项目运营商:Skydive Australia
2018/03/05 全球购物
介绍一下Python下range()函数的用法
2013/11/07 面试题
车队司机自我鉴定
2014/03/02 职场文书
法学自荐信
2014/06/20 职场文书
2014年护士个人工作总结
2014/11/11 职场文书
英文产品推荐信
2015/03/27 职场文书
销售人员管理制度
2015/08/06 职场文书
2016中秋节月饼促销广告语
2016/01/28 职场文书
Golang gRPC HTTP协议转换示例
2022/06/16 Golang