Une question sur la gestion de la mémoire PHP
给我你的怀抱
给我你的怀抱 2017-05-16 13:11:22
0
2
437

J'ai écrit un fichier pour tester l'utilisation de la mémoire de PHP. J'ai découvert que la mémoire occupée par les variables après la publication est différente entre les tableaux et les objets. Voici le code exécuté dans PHP 7.0 CLI. mode.

Tableau :

<?php
fonction convertir($taille){
    $unit=array('b','kb','mb','gb','tb','pb');
    echo @round($size/pow(1024,($i=floor(log($size,1024)))),2).$unit[$i]."\n";
}
fonction a(){
    $une = [];
    pour($i=0;$i<1000000;$i++){
        $une[$i] = $i;
    }
    convert(memory_get_usage(true));
}
convert(memory_get_usage(true));
// 2M
un();
convertir (memory_get_usage (true))
// 2M

Sortie :

2M 34M 2M

Objet :

<?php
fonction convertir($taille){
    $unit=array('b','kb','mb','gb','tb','pb');
    echo @round($size/pow(1024,($i=floor(log($size,1024)))),2).$unit[$i]."\n";
}
fonction a(){
    $a = nouvelle ClasseStd ;
    pour($i=0;$i<1000000;$i++){
        $a->$i = $i;
    }
    convert(memory_get_usage(true));
}
convert(memory_get_usage(true));
un();
convertir(memory_get_usage(true))

Sortie :

2M 68M 32 M
给我你的怀抱
给我你的怀抱

répondre à tous(2)
世界只因有你

Cette question est très compliquée. Elle concerne le mécanisme de récupération de place de PHP, je ne le comprends pas très bien. Je vais partager avec vous ce que je comprends.
Chaque processus PHP se verra attribuer un tampon racine. Lors de l'exécution, chaque référence à la structure de données PHP sera placée dans ce tampon. Une fois la limite supérieure du tampon atteinte (généralement 10 000), PHP sera déclenché. pour nettoyer certaines ressources invalides.
Si vous modifiez le nombre de boucles à 5 000 fois, le garbage collection ne sera pas déclenché. La valeur de la mémoire des deux dernières fois devrait être la même. Vous pouvez l'essayer.

过去多啦不再A梦

J'ai lu un article et j'espère qu'il aidera

Collecte des déchets

Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal