dongqian6484 2013-07-10 09:06
浏览 71

PHP memory_get_usage(false)vs memory_get_usage(true)

Can somebody clarify what's the exact difference of the $real_usage parameter for memory_get_usage()?

The manual states:

Set this to TRUE to get the real size of memory allocated from system. If not set or FALSE only the memory used by emalloc() is reported.

But what's the difference? Which value is comparable to the memory_limit INI setting?

For some long running scripts I get something like 250MB real usage and just 50MB emalloc usage. How is that possible?

I'm trying to analyze some memory leak problems and memory_get_usage() is an important indicator for me that I need to fully understand. Thanks.

  • 写回答

1条回答 默认 最新

  • dtdt0454 2013-07-10 09:57
    关注

    The real memory is the amount of memory that's reserved for the PHP process. PHP reserves memory in large chunks, and this will be <= memory_limit, and may increase during the script's execution. Eg. If it fills up a chunk, and you then try to assign to a new variable, it will reserve another chunk.

    If you set the parameter to FALSE, it only reports the amount of memory that PHP is actually using inside the reserved memory. This will increase every time you assign to a new variable, or call a function etc.

    If you're interested in the amount of memory that is actually being used, then you'll want the real memory.

    If you're debugging, or trying to tune a piece of code, you'll probably be more interested in the emalloc() memory. This would allow you to check the memory before and after an assignment or function call and calculate the delta.

    评论

报告相同问题?

悬赏问题

  • ¥15 安卓adb backup备份应用数据失败
  • ¥15 eclipse运行项目时遇到的问题
  • ¥15 关于#c##的问题:最近需要用CAT工具Trados进行一些开发
  • ¥15 南大pa1 小游戏没有界面,并且报了如下错误,尝试过换显卡驱动,但是好像不行
  • ¥15 没有证书,nginx怎么反向代理到只能接受https的公网网站
  • ¥50 成都蓉城足球俱乐部小程序抢票
  • ¥15 yolov7训练自己的数据集
  • ¥15 esp8266与51单片机连接问题(标签-单片机|关键词-串口)(相关搜索:51单片机|单片机|测试代码)
  • ¥15 电力市场出清matlab yalmip kkt 双层优化问题
  • ¥30 ros小车路径规划实现不了,如何解决?(操作系统-ubuntu)