mysql - PHP偷了我的内存

WBOY
Libérer: 2016-06-06 20:48:54
original
1157 Les gens l'ont consulté

<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>
Copier après la connexion
Copier après la connexion

输出结果为: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>
Copier après la connexion
Copier après la connexion

输出结果为: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以后内存不变

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!