$m1 = memory_get_usage(); var_dump($m1); $arr = array_fill(0, 100000, 'phpinfo'); unset($arr); $m2 = memory_get_usage(); var_dump($m2); var_dump("消耗内存:".($m2-$m1)/1000);
输出结果为:string(21) "消耗内存:64.688";
我很不解,我已经对大数组使用unset了,这占用的64.688K内存是从哪跑出来的,求解
$m1 = memory_get_usage(); var_dump($m1); $arr = array_fill(0, 100000, 'phpinfo'); unset($arr); $m2 = memory_get_usage(); var_dump($m2); var_dump("消耗内存:".($m2-$m1)/1000);
输出结果为:string(21) "消耗内存:64.688";
我很不解,我已经对大数组使用unset了,这占用的64.688K内存是从哪跑出来的,求解
>
http://www.laruence.com/2011/03/04/1894.html
立即学习“PHP免费学习笔记(深入)”;
PHP并不是简单的向OS要内存, 而是会像OS要一个大块的内存, 然后把其中的一块分配给申请者, 这样当再有逻辑来申请内存的时候, 就不再需要向OS申请内存了, 避免了频繁的系统调用. 在我们调用efree释放内存的时候, PHP也不会把内存还给OS, 而会把这块内存, 归入自己维护的空闲内存列表. 而对于小块内存来说, 更可能的是, 把它放到内存缓存列表中去(后记, 某些版本的PHP, 比如我验证过的PHP5.2.4, 5.2.6, 5.2.8, 在调用get_memory_usage()的时候, 不会减去内存缓存列表中的可用内存块大小, 导致看起来, unset以后内存不变
PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号