mysql - PHP偷了我的内存

WBOY
Lepaskan: 2016-06-06 20:48:54
asal
1158 orang telah melayarinya

<code>$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);
</code>
Salin selepas log masuk
Salin selepas log masuk

输出结果为:string(21) "消耗内存:64.688";

我很不解,我已经对大数组使用unset了,这占用的64.688K内存是从哪跑出来的,求解

回复内容:

<code>$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);
</code>
Salin selepas log masuk
Salin selepas log masuk

输出结果为:string(21) "消耗内存:64.688";

我很不解,我已经对大数组使用unset了,这占用的64.688K内存是从哪跑出来的,求解

>
http://www.laruence.com/2011/03/04/1894.html

PHP并不是简单的向OS要内存, 而是会像OS要一个大块的内存, 然后把其中的一块分配给申请者, 这样当再有逻辑来申请内存的时候,
就不再需要向OS申请内存了, 避免了频繁的系统调用.

在我们调用efree释放内存的时候, PHP也不会把内存还给OS, 而会把这块内存, 归入自己维护的空闲内存列表. 而对于小块内存来说,
更可能的是, 把它放到内存缓存列表中去(后记, 某些版本的PHP, 比如我验证过的PHP5.2.4, 5.2.6, 5.2.8,
在调用get_memory_usage()的时候, 不会减去内存缓存列表中的可用内存块大小, 导致看起来, unset以后内存不变

Label berkaitan:
sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!