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设计模式 Chain Of Responsibility (职责链模式)
Jun 26 PHP
php数组函数序列之next() - 移动数组内部指针到下一个元素的位置,并返回该元素值
Oct 31 PHP
windows7下安装php的imagick和imagemagick扩展教程
Jul 04 PHP
PHP的mysqli_query参数MYSQLI_STORE_RESULT和MYSQLI_USE_RESULT的区别
Sep 29 PHP
PHP自定session保存路径及删除、注销与写入的方法
Nov 18 PHP
PHP魔术方法的使用示例
Jun 23 PHP
PHP 设计模式系列之 specification规格模式
Jan 10 PHP
mysql desc(DESCRIBE)命令实例讲解
Sep 24 PHP
php实现产品加入购物车功能(1)
Jul 23 PHP
使用PHPExcel实现数据批量导出为excel表格的方法(必看)
Jun 09 PHP
PHP中的日期时间处理利器实例(Carbon)
Jun 09 PHP
PHP提取字符串中的手机号正则表达式怎么写
Jul 17 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
全国FM电台频率大全 - 9 上海市
2020/03/11 无线电
第1次亲密接触PHP5(2)
2006/10/09 PHP
php daddslashes()和 saddslashes()有哪些区别分析
2012/10/26 PHP
利用Homestead快速运行一个Laravel项目的方法详解
2017/11/14 PHP
PHP如何实现阿里云短信sdk灵活应用在项目中的方法
2019/06/14 PHP
PHP 对象接口简单实现方法示例
2020/04/13 PHP
Js动态创建div
2008/09/25 Javascript
Javascript string 扩展库代码
2010/04/09 Javascript
javascript实现的一个带下拉框功能的文本框
2014/05/08 Javascript
JavaScript中5种调用函数的方法
2015/03/12 Javascript
JS操作COOKIE实现备忘记录的方法
2016/04/01 Javascript
js 获取当前web应用的上下文路径实现方法
2016/08/19 Javascript
jQuery插件版本冲突的处理方法分析
2017/01/16 Javascript
微信小程序动态的加载数据实例代码
2017/04/14 Javascript
微信JS-SDK选取手机照片上传功能
2017/04/21 Javascript
Node.js+Express+MySql实现用户登录注册功能
2017/07/10 Javascript
elementui的默认样式修改方法
2018/02/23 Javascript
vue使用技巧及vue项目中遇到的问题
2018/06/04 Javascript
Vue 递归多级菜单的实例代码
2019/05/05 Javascript
微信小程序上传文件到阿里OSS教程
2019/05/20 Javascript
vue-cli设置publicPath小记
2020/04/14 Javascript
浅谈Vue3 Composition API如何替换Vue Mixins
2020/04/29 Javascript
Python实现的简单算术游戏实例
2015/05/26 Python
python访问mysql数据库的实现方法(2则示例)
2016/01/06 Python
pandas中apply和transform方法的性能比较及区别介绍
2018/10/30 Python
在Pycharm中设置默认自动换行的方法
2019/01/16 Python
python 获取sqlite3数据库的表名和表字段名的实例
2019/07/17 Python
Python使用Tkinter实现转盘抽奖器的步骤详解
2020/01/06 Python
英国珠宝钟表和家居礼品精品店:David Shuttle
2018/02/24 全球购物
iPad和Surface Pro蓝牙键盘:Brydge
2018/11/10 全球购物
项目经理任命书
2014/06/04 职场文书
小学师德师风整改措施
2014/10/27 职场文书
小学班主任工作总结2015
2015/04/07 职场文书
同学会演讲稿
2019/04/02 职场文书
Matlab如何实现矩阵复制扩充
2021/06/02 Python
vue 给数组添加新对象并赋值
2022/04/20 Vue.js