【发布时间】:2012-03-13 09:03:43
【问题描述】:
我正在做一些 PHP 内存基准测试,我想获得垃圾收集器的静态数据。
我已经按照官方文档中的这个教程:http://www.php.net/manual/en/features.gc.performance-considerations.php
我已经通过使用这个 CFLAGS 环境变量重新编译 PHP 复制了所描述的确切过程:
export CFLAGS=-DGC_BENCH=1
./config.nice
make clean
make
make install
我已经在 Debian Squeeze 6.0.4 64 位上使用 PHP 5.3.9 :http://fr.php.net/get/php-5.3.9.tar.bz2/from/a/mirror 做到了这一点。
然后我尝试在命令行中执行他们提供的示例脚本php gc.php:
<?php
class Foo
{
public $var = '3.1415962654';
}
for ( $i = 0; $i <= 1000000; $i++ )
{
$a = new Foo;
$a->self = $a;
}
echo memory_get_peak_usage(), "\n";
?>
正如他们所说,这应该显示在脚本的末尾,附加 gc 统计信息,例如:
GC Statistics
-------------
Runs: 110
Collected: 2072204
Root buffer length: 0
Root buffer peak: 10000
Possible Remove from Marked
Root Buffered buffer grey
-------- -------- ----------- ------
ZVAL 7175487 1491291 1241690 3611871
ZOBJ 28506264 1527980 677581 1025731
事实上,这个 gc 统计信息并没有显示出来。 看起来用这个 CFLAGS 编译 PHP 并没有做任何事情。
我错过了什么吗?
【问题讨论】:
-
你能告诉我们实际显示的是什么吗?
-
这个脚本只显示 PHP 分配的内存峰值(由 memory_get_peak_usage() 函数完成)。在我的情况下
8012000. -
我注意到你做了
make clean和make,你做了make install吗? -
是的,我制作了
make install。编辑程序。 -
有任何与
memory_get_peak_usage调用相关的错误日志条目吗?是否有任何所需的较低级别的库(即 libxml)?
标签: php memory memory-management garbage-collection