php – 如何确定变量的内存占用量(大小)?

在PHP(或PHP扩展)中有一个函数来找出给定变量使用多少内存? sizeof只是告诉我元素/属性的数量。

memory_get_usage有助于它给我整个脚本使用的内存大小。有没有办法做到这一点单个变量?

注意,这是在开发机器上,所以加载扩展或调试工具是可行的。

你可能需要一个内存分析器。我收集了信息为SO,但我已经复制了一些重要的事情,可以帮助你也。

你可能知道,Xdebug从2. *版本下降了内存分析支持。请在这里搜索“删除的函数”字符串:http://www.xdebug.org/updates.php

Removed functions

Removed support for Memory profiling as that didn’t work properly.

其他Profiler选项

php内存分析器

https://github.com/arnaud-lb/php-memory-profiler.这是我在我的Ubuntu服务器上启用它:

sudo apt-get install libjudy-dev libjudydebian1
sudo pecl install memprof
echo "extension=memprof.so" > /etc/php5/mods-available/memprof.ini
sudo php5enmod memprof
service apache2 restart

然后在我的代码:

<?php
memprof_enable();
// do your stuff
memprof_dump_callgrind(fopen("/tmp/callgrind.out", "w"));

最后用KCachegrind打开callgrind.out文件

使用Google gperftools(推荐!)

首先,通过在这里下载最新的软件包来安装Google gperftools:https://code.google.com/p/gperftools/

然后一如既往:

sudo apt-get update
sudo apt-get install libunwind-dev -y
./configure
make
make install

现在在你的代码:

memprof_enable();

// do your magic

memprof_dump_pprof(fopen("/tmp/profile.heap", "w"));

然后打开你的终端并启动:

pprof --web /tmp/profile.heap

pprof将在您现有的浏览器会话中创建一个新窗口,如下所示:

Xhprof Xhgui(在我看来,最好的配置文件的cpu和内存)

使用Xhprof和Xhgui,你可以配置cpu使用,或者只是内存使用,如果这是你的问题,在这一刻。
它是一个非常完整的解决方案,它给你完全控制,日志可以写在mongo或文件系统。

详情请致电see here

黑火

Blackfire是SensioLabs的一个PHP分析器,Symfony2的家伙https://blackfire.io/

如果你使用puphpet来设置你的虚拟机,你会很高兴知道它是支持的;-)

Xdebug和跟踪内存使用

XDEBUG2是PHP的扩展。 Xdebug允许您记录所有函数调用,包括参数和返回值到不同格式的文件。有三种输出格式。一个是作为一个人类可读的跟踪,另一个更适合计算机程序,因为它更容易解析,最后一个使用HTML格式化跟踪。您可以使用该设置在两种不同的格式之间切换。一个例子是available here

forp

forp简单,非侵入,面向生产,PHP剖析器。一些功能是:

>测量每个功能的时间和分配的内存
> CPU使用率
>文件和行号函数调用
>输出为Google的跟踪事件格式
>标题的功能
>功能分组
>函数别名(对匿名函数有用)

DBG

DBG是一个功能齐全的php调试器,一个交互式工具,可以帮助您调试php脚本。它在生产和/或开发WEB服务器上工作,允许您从IDE或控制台本地或远程调试脚本,其功能包括:

>远程和本地调试
>显式和隐式激活
>调用堆栈,包括函数调用,动态和静态方法调用,以及它们的参数
>通过调用堆栈导航,以评估相应(嵌套)位置中的变量
>步入/跳出/跳过/运行到光标功能
>条件断点
>全局断点
>记录错误和警告
>多个并行会话用于并行调试
>支持GUI和CLI前端
>支持IPv6和IPv4网络
>调试器传输的所有数据可以选择使用SSL保护

http://stackoverflow.com/questions/2192657/how-to-determine-the-memory-footprint-size-of-a-variable

本站文章除注明转载外,均为本站原创或编译
转载请明显位置注明出处:php – 如何确定变量的内存占用量(大小)?