测试脚本:
1 2 3 4 5 6 7 8 9 |
<?php echo "mem size:" .memory_get_usage(false)."\n"; echo " mem :" .memory_get_usage(true)."\n"; $a = str_repeat("H", 60 * 1024); echo "mem size:" .memory_get_usage(false)."\n"; echo " mem :" .memory_get_usage(true)."\n"; unset($a); echo "mem size:" .memory_get_usage(false)."\n"; echo " mem :" .memory_get_usage(true)."\n"; |
- php每次问系统要内存不是需要多少就要多少,而是最少申请 256KB,这样就有可能有一部分属于申请了,但是没使用;于是php函数memory_get_usage($real)的参数就能理解了; real = true,即:向系统确实申请了多少; real = false 即: php真正用到了多少。
- 每次申请系统内存的单位为 256KB,这个在 ./configure:#define SEG_SIZE (256*1024) 中有定义; 也可以通过环境变量ZEND_MM_SEG_SIZE 来设置;需要注意的是,该值必须为2的n次方,如:4096 可以,40960就不可以