Maison > développement back-end > tutoriel php > Quel est le lien entre le modèle d'usine et l'allocation de mémoire ?

Quel est le lien entre le modèle d'usine et l'allocation de mémoire ?

青灯夜游
Libérer: 2023-04-05 18:12:01
avant
2158 Les gens l'ont consulté

Le contenu de cet article est de présenter le mode usine et l'allocation de mémoire, ainsi que le lien entre le mode usine et l'allocation de mémoire. Il a une certaine valeur de référence. Les amis dans le besoin peuvent s'y référer. J'espère qu'il vous sera utile.

1. Qu'est-ce que le modèle d'usine

1. Le modèle d'usine est une classe ou une méthode responsable de la production d'autres objets. Usines couramment utilisées Une utilisation du modèle :

<?php    class ExportIndustryObj{
       public $_obj;

       public function getObj(){
           if(!$this->_obj){
               $this->_obj = new Test();
           }   

           return $this->_obj;
       }   
  }   

  class Test{
       public function __construct(){
           echo 121111;
       }   

  }   


  $industry = new ExportIndustryObj();
  $obj1 = $industry->getObj();
  $obj2 = $industry->getObj();
  var_dump($obj1,$obj2);
Copier après la connexion

2. Une fois le code ci-dessus exécuté :

Quel est le lien entre le modèle dusine et lallocation de mémoire ?

3. Analyse du code :

(1)代码中输出了两个对象,分部是$obj1和$obj2,输出了一次construct中的数字,两个对象编号一样
(2)由此可见,工厂模式可以做到一点,就是只new一次对象
Copier après la connexion

2. Comment les objets sont-ils alloués en mémoire ?

1. Du point de vue de l'allocation, la mémoire peut être grossièrement divisée en quatre types : segment d'espace de pile, segment d'espace de tas, segment de code et segment statique d'initialisation.

2. Le segment d'espace de pile est un endroit pour stocker des types de données qui occupent la même longueur d'espace et occupent moins d'espace, tels que les entiers 1, 10, 100, 1000, 10000, 100000, etc. Attendez, l'espace occupé dans la mémoire est de la même longueur, les deux sont de 64 bits et 4 octets.

3. Le segment d'espace de tas est un type de données qui stocke des données de longueur variable et occupe un grand espace, comme des objets.

4. Le segment de code est l'endroit où le code du programme d'exécution lui-même est stocké.

5. Le segment de données est une variable globale qui stocke l'initialisation et n'est pas 0, comme les variables statiques et les constantes.

6. Icône d'allocation de mémoire :

Quel est le lien entre le modèle dusine et lallocation de mémoire ?

7. La mémoire de la pile est directement accessible, mais la mémoire du tas n'est pas directement accessible.

8. Pour notre objet, il s'agit d'un type de données volumineux et il occupe une longueur d'espace variable, donc l'objet lui-même est placé dans le tas, mais le nom de l'objet C'est placé dans la pile , afin que l'objet puisse être utilisé à travers le nom de l'objet

9. Illustration de l'objet :

Quel est le lien entre le modèle dusine et lallocation de mémoire ?

10. Comme vous pouvez le voir sur l'image ci-dessus, le nom de l'objet est stocké dans la pile, trois objets personnes sont nouveaux et trois informations d'objet spécifiques sont stockées dans le tas.

3. Le lien entre le mode usine et l'allocation de mémoire

1. Pour résumer, on peut savoir que le mode usine ne crée que comme. autant que possible Une fois l'objet créé, il n'est pas nécessaire de créer des objets en double dans l'espace du tas, ce qui entraînerait une perte d'espace, car l'espace du tas lui-même est de longueur variable et possède un grand espace.

2. Mode Usine, extrayez les mots-clés, qui sont "une seule fois les nouveaux objets" et "économisent de l'espace sur le tas".

Tutoriels vidéo recommandés : "Tutoriel PHP"

Ce qui précède est l'intégralité du contenu de cet article, j'espère qu'il sera utile à l'apprentissage de chacun. Pour un contenu plus passionnant, vous pouvez prêter attention aux colonnes de didacticiels pertinentes du site Web PHP chinois ! ! !

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:segmentfault.com
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