gpt4 book ai didi

空 PHP 脚本上的 PHP memory_get_usage()

转载 作者:行者123 更新时间:2023-12-02 05:18:27 26 4
gpt4 key购买 nike

我决定查看分配给我的一些 PHP 脚本的内存量,发现它的峰值约为 130KiB。考虑到脚本中发生的事情,我认为还不错。

然后,我决定看看脚本是从哪里开始的。我预计大约 32KiB。

我得到的是 121952 字节。之后,我尝试测试一个完全没有脚本的脚本:

<?php 
echo memory_get_usage();

它也是从分配相同数量的内存开始的。

现在,很明显,PHP 将在脚本运行之前为脚本分配一些内存,但这似乎有点过分。

但是,根据当时系统可用的内存量,它似乎根本不是动态的。我尝试通过打开其他进程来消耗更多系统内存,但预分配的内存量保持相同的字节数。

这是否可以在每个脚本的基础上进行配置,PHP 如何确定它将为每个脚本分配多少?

Using PHP Version 5.4.7

谢谢。

最佳答案

memory_get_usage 函数直接查询 PHP 的内存分配器以获取此信息。它报告 PHP 本身使用了多少内存,而不是整个进程甚至整个系统使用了多少内存。

如果您不传入额外的 true 参数,您返回的是您的代码使用的确切内存量;这永远不会超过 memory_get_usage(true) 报告的内容。

如果您确实调用了memory_get_usage(true),您将从系统中取回分配器保留的堆的大小,其中包括您的代码实际未使用但直接使用的内存可用于您的代码。

当您的脚本需要的内存比分配器可用的内存多时,分配器将从操作系统中保留另一大块内存,您会看到 memory_get_usage(true) 急剧上升,而 memory_get_usage() 可能只会增加几个字节。

分配器用于决定何时分配多少内存的确切策略在编译时被写入 PHP;您必须编辑源代码并编译 PHP 才能更改此行为。

关于空 PHP 脚本上的 PHP memory_get_usage(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14260517/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com