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 相关文章推荐
swfupload 多文件上传实现代码
Aug 27 PHP
PHP parse_url 一个好用的函数
Oct 03 PHP
PHP学习 变量使用总结
Mar 24 PHP
解析:php调用MsSQL存储过程使用内置RETVAL获取过程中的return值
Jul 03 PHP
php json与xml序列化/反序列化
Oct 28 PHP
php对数组排序代码分享
Feb 24 PHP
php输入流php://input使用浅析
Sep 02 PHP
thinkPHP学习笔记之安装配置篇
Mar 05 PHP
利用PHP抓取百度阅读的方法示例
Dec 18 PHP
PHP 传输会话curl函数的实例详解
Sep 12 PHP
Laravel学习基础之migrate的使用教程
Oct 11 PHP
thinkPHP5分页功能实现方法分析
Oct 25 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中常用字符串处理代码片段整理
2011/11/07 PHP
PHP动态生成指定大小随机图片的方法
2016/03/25 PHP
php封装的表单验证类完整实例
2016/10/19 PHP
详解PHP swoole process的使用方法
2017/08/26 PHP
锋利的jQuery 要点归纳(三) jQuery中的事件和动画(上:事件篇)
2010/03/24 Javascript
33个优秀的jQuery 教程分享(幻灯片、动画菜单)
2011/07/08 Javascript
Jquery中val()表单取值赋值的实例代码
2013/08/15 Javascript
在百度知道团队中快速审批新成员的js脚本
2014/02/02 Javascript
你未必知道的JavaScript和CSS交互的5种方法
2014/04/02 Javascript
jQuery常用操作方法及常用函数总结
2014/06/19 Javascript
javascript实现支持移动设备画廊
2015/08/24 Javascript
javascript基础知识
2016/06/07 Javascript
微信小程序 action-sheet 反馈上拉菜单简单实例
2017/05/11 Javascript
Angular实现图片裁剪工具ngImgCrop实践
2017/08/17 Javascript
JS数组操作之增删改查的简单实现
2017/08/21 Javascript
vue+canvas实现炫酷时钟效果的倒计时插件(已发布到npm的vue2插件,开箱即用)
2018/11/05 Javascript
解决vue v-for src 图片路径问题 404
2019/11/12 Javascript
[48:20]OpTic vs Serenity 2018国际邀请赛小组赛BO2 第二场 8.18
2018/08/19 DOTA
Python引用(import)文件夹下的py文件的方法
2014/08/26 Python
10款最好的Web开发的 Python 框架
2015/03/18 Python
深入解析Python中的urllib2模块
2015/11/13 Python
Python存取XML的常见方法实例分析
2017/03/21 Python
python机器学习之随机森林(七)
2018/03/26 Python
更改Python的pip install 默认安装依赖路径方法详解
2018/10/27 Python
python3 实现一行输入,空格隔开的示例
2018/11/14 Python
在python中画正态分布图像的实例
2019/07/08 Python
Django实现发送邮件功能
2019/07/18 Python
浅谈python的elementtree模块处理中文注意事项
2020/03/06 Python
Css3实现无缝滚动防抖
2020/09/14 HTML / CSS
美国正宗奢华复古手袋、珠宝及配饰网站:What Goes Around Comes Around
2018/07/21 全球购物
马来西亚领先的在线礼品店:Giftr
2018/08/23 全球购物
小学安全工作总结2015
2015/05/18 职场文书
试了下Golang实现try catch的方法
2021/07/01 Golang
Vue elementUI表单嵌套表格并对每行进行校验详解
2022/02/18 Vue.js
【海涛解说】史上最给力比赛,挑战DOTA极限
2022/04/01 DOTA
JavaScript实现简单的音乐播放器
2022/08/14 Javascript