Maison interface Web js tutoriel Javascript 垃圾收集机制介绍理解_基础知识

Javascript 垃圾收集机制介绍理解_基础知识

May 16, 2016 pm 05:33 PM
垃圾 collecter 机制

经常使用 Javascript 的人会琢磨其垃圾收集机制,Javascript 并不像 C,C++ 那样需要开发者手动去清除垃圾,在编写 Javascript 程序是,开发者无需关心内存使用问题,所需内存分配以及无用内存(垃圾)的回收完全实现了自动管理。究其根源,主要是程序收集那些不再使用的变量,并且释放其占用的内存。因此,垃圾收集机制会按照固定时间间隔,周期性反复的执行这一操作。


举例来说,局部变量只存在于函数内部,程序会为局部变量在栈内存或堆内存中分配对应的存储空间,当函数运行结束,局部变量所占用的内存就没有存在的必要了,这时程序会释放局部变量所占用的内存供其他变量使用。这是程序最简单释放内存的方法,但是很多时候,程序中变量会一直被使用,此时垃圾收集机制必须跟踪变量并且判断其是否被使用,是否可以释放其内存空间。

垃圾收集机制主要判断变量释放内存空间的方法有两个:其一是标记清除法,其二是引用计数法。

标记法,每个变量都有其运行环境,变量创建后会在某种环境中运行,比如创建一个局部变量,局部变量会运行在函数体内。当函数运行时,会标记局部变量为“进入环境”,当函数体运行结束后,意味着变量脱离了其运行环境,此时则将变量标记为“离开环境”。对于“离开环境”的变量,垃圾收集机制会进行相应记录,并且在下一个回收周期时将其释放。

引用计数法,跟踪记录每个值的被引用次数。声明一个变量并将一个引用类型值赋给该变量时,这个值得引用次数就是 1。如果同一个值又被赋给另外一个变量,则该值的引用次数加 1。相反,如果包含对这个值的引用的变量又取得另外一个值,这个值得引用次数减 1。当这个值得引用次数为 0 时,则说明没有办法再访问到此值,因此就可以将其占用的内存空间回收。当垃圾收集器在下一个周期运行时,会释放引用次数为零的值所占用的内存空间。(原文解释参考:Javascript 高级程序设计 - 第二版)

举个例子来说:

复制代码 代码如下:

            function countMethod(){
                  var object1 = new Object(); // 声明变量,计数器由 0 变为 1
                  var object2 = new Object(); // 声明变量,计数器由 0 变为 1
                  object1.method1 = object2;  // object1 计数器 -1,object2 计数器 +1
                  object2.method2 = object1;  // object1 计数器 +1,object2 计数器 -1
            }

此函数运行退出后,object1 的计数器读数为 1,object2 的计数器度数为 1。所以两个变量都不会被销毁。如果大量的这样的程序存在于函数体内,就会导致大量的内存被浪费而无法回收,从而导致内存的泄露。

上述问题解决方法,手动释放 object1 object2 所占用的内存。即:
复制代码 代码如下:

                 object1.method1 = null;
                 object2.method2 = null;

对比上面的例子,举一个正常情况下的例子。
复制代码 代码如下:

            function countMethod(){
                  var object1 = new Object(); // 声明变量,计数器由 0 变为 1
                  var object2 = new Object(); // 声明变量,计数器由 0 变为 1
                  object1.method1 = "This is object1";  // object1 计数器 -1,object1 读数变为0
                  object2.method2 = "This is object2";  // object2 计数器 -1,object2 读数变为0
            }

通过上例看出,正常情况下,当函数运行结束后,object1 object2的读数均为 0,在下一个垃圾收集周期时,会被回收并且释放其所占用的内存。
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

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

AI Hentai Generator

AI Hentai Generator

Générez AI Hentai gratuitement.

Article chaud

R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
2 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Repo: Comment relancer ses coéquipiers
1 Il y a quelques mois By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Adventure: Comment obtenir des graines géantes
4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Combien de temps faut-il pour battre Split Fiction?
3 Il y a quelques semaines By DDD

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Comment collecter rapidement du bois dur à Stardew Valley Comment collecter rapidement du bois dur à Stardew Valley Mar 26, 2024 am 11:21 AM

Le bois dur est un matériau synthétique important dans Stardew Valley. Nous pouvons avoir de nombreuses utilisations dans le jeu, nous pouvons donc le stocker dans notre vie quotidienne. Quelles sont les façons spécifiques d'obtenir du bois dur ? Ci-dessous, nous vous présenterons Stardew Valley. à la manière d'obtenir du bois dur à Monogatari si nécessaire. Façons d'obtenir du bois dur dans Stardew Valley 1. Rendez-vous chaque jour dans la forêt secrète pour creuser des souches d'arbres afin d'obtenir rapidement du bois dur. 2. Il est possible d'obtenir des graines d'acajou en extrayant des souches d'arbres et en combattant des monstres dans la forêt secrète. 3. Planter des graines dans la cour produira des acajous. 4. Enfin, après avoir extrait de l'acajou, vous pouvez rapidement obtenir une grande quantité de bois dur.

Installez CentOS sur les téléphones mobiles et installez CentOS 7 sur les téléphones mobiles Installez CentOS sur les téléphones mobiles et installez CentOS 7 sur les téléphones mobiles Feb 29, 2024 pm 02:43 PM

Préface En tant qu'utilisateurs passionnés de Linux, nous sommes souvent confrontés au besoin d'installer CentOS ou CentOS7 sur les téléphones mobiles. Bien que les téléphones mobiles ne soient pas la meilleure plate-forme d'exécution Linux, nous devons parfois effectuer certaines opérations ou travaux de développement liés à Linux sur les téléphones mobiles. Dans cet article, nous verrons en détail comment installer CentOS ou CentOS7 sur votre téléphone. Installer CentOS sur un téléphone mobile Pour installer CentOS sur un téléphone mobile, nous avons d'abord besoin d'un téléphone mobile prenant en charge la technologie de virtualisation, comme un téléphone mobile prenant en charge le système Android. Ensuite, nous pouvons utiliser une application d'émulation de terminal telle que Termux pour simuler Linux. Dans Termux, nous pouvons utiliser un gestionnaire de packages pour installer CentOS.

Le navigateur Microsoft Edge sur Windows 11/10 ajoute la fonction « Mobile Upload » pour faciliter le transfert de fichiers entre appareils Le navigateur Microsoft Edge sur Windows 11/10 ajoute la fonction « Mobile Upload » pour faciliter le transfert de fichiers entre appareils Feb 22, 2024 am 08:10 AM

Microsoft a ajouté une nouvelle fonctionnalité au navigateur Edge sous Windows 11/10 dans la dernière version stable, à savoir « Mobile Upload ». Les utilisateurs peuvent désormais télécharger des fichiers directement depuis leur téléphone via le navigateur Edge, et la fonctionnalité fonctionne sur presque tous les sites Web sans restrictions de format de fichier. L'introduction de cette fonctionnalité offre aux utilisateurs une méthode de téléchargement plus pratique, rendant plus efficace la gestion et le partage de fichiers lors de l'utilisation du navigateur Edge. Comment utiliser la fonctionnalité « Téléchargement mobile » : ouvrez le navigateur Edge, cliquez sur l'option « Télécharger » sur n'importe quel site Web, puis sélectionnez « Télécharger depuis un mobile » dans le sélecteur de fichiers. Utilisez l'appareil photo de votre téléphone pour scanner le code QR. Cliquez sur « Confirmer » pour coupler l'appareil dans le navigateur Edge. Cliquez sur l'option "Télécharger le fichier"

Une exploration approfondie de l'emplacement de stockage et du mécanisme des variables Golang Une exploration approfondie de l'emplacement de stockage et du mécanisme des variables Golang Feb 28, 2024 pm 09:45 PM

Titre : Une exploration approfondie de l'emplacement de stockage et du mécanisme des variables Golang À mesure que l'application du langage Go (Golang) augmente progressivement dans les domaines du cloud computing, du big data et de l'intelligence artificielle, il est particulièrement important d'avoir une idée. compréhension approfondie de l'emplacement de stockage et du mécanisme des variables Golang. Dans cet article, nous discuterons en détail de l'allocation de mémoire, de l'emplacement de stockage et des mécanismes associés des variables dans Golang. Grâce à des exemples de code spécifiques, il aide les lecteurs à mieux comprendre comment les variables Golang sont stockées et gérées en mémoire. 1.Mémoire des variables Golang

Compréhension approfondie des mécanismes de recalcul et de rendu de la mise en page CSS Compréhension approfondie des mécanismes de recalcul et de rendu de la mise en page CSS Jan 26, 2024 am 09:11 AM

La redistribution et le repaint CSS sont des concepts très importants dans l'optimisation des performances des pages Web. Lors du développement de pages Web, comprendre le fonctionnement de ces deux concepts peut nous aider à améliorer la vitesse de réponse et l'expérience utilisateur de la page Web. Cet article approfondira les mécanismes de redistribution et de repeinture CSS et fournira des exemples de code spécifiques. 1. Qu'est-ce que la redistribution CSS ? Lorsque la visibilité, la taille ou la position des éléments dans la structure DOM change, le navigateur doit recalculer et appliquer les styles CSS, puis réorganiser

Tutoriel étape par étape sur le nettoyage des fichiers indésirables du système sous Windows 10 Tutoriel étape par étape sur le nettoyage des fichiers indésirables du système sous Windows 10 Jul 13, 2023 pm 09:53 PM

Certains utilisateurs ont rencontré le problème du nettoyage des fichiers indésirables par le système Win10 lors de l'utilisation de leur ordinateur. Comment devrions-nous résoudre le problème du nettoyage des fichiers indésirables par le système Win10 ? De nos jours, de nombreux utilisateurs ne savent toujours pas comment gérer la situation de nettoyage des déchets dans le système Win10, jetons donc un coup d'œil au didacticiel étape par étape sur le nettoyage des fichiers indésirables du système dans Win10. regarder. 1. Sur le bureau de l'ordinateur, cliquez sur « Ce PC » et gérez. 2. Sélectionnez Gestion des disques. 3. Sélectionnez le disque que vous souhaitez nettoyer, cliquez avec le bouton droit et sélectionnez Propriétés. 4. Cliquez sur le bouton « Nettoyage de disque » en bas de la page. 5. Dans l'interface qui apparaît, sélectionnez les fichiers que vous souhaitez nettoyer, cliquez sur « OK » et cliquez sur « Supprimer les fichiers ». Ce qui précède est un didacticiel étape par étape sur la façon de nettoyer les fichiers indésirables du système sous Windows 10. J'espère

Mécanisme de chargement automatique en PHP Mécanisme de chargement automatique en PHP Jun 18, 2023 pm 01:11 PM

À mesure que le langage PHP devient de plus en plus populaire, les développeurs doivent utiliser de plus en plus de classes et de fonctions. Lorsqu'un projet grandit, l'introduction manuelle de toutes les dépendances devient peu pratique. À l’heure actuelle, un mécanisme de chargement automatique est nécessaire pour simplifier le processus de développement et de maintenance du code. Le mécanisme de chargement automatique est une fonctionnalité du langage PHP qui peut charger automatiquement les classes et interfaces requises au moment de l'exécution et réduire l'introduction manuelle des fichiers de classe. De cette façon, les programmeurs peuvent se concentrer sur le développement du code et réduire les erreurs et la perte de temps causées par une introduction manuelle fastidieuse aux cours. En PHP, généralement

Genshin Impact Comment collecter le pouvoir immortel dispersé Genshin Impact Comment collecter le pouvoir immortel dispersé Feb 01, 2024 pm 04:51 PM

Dans Genshin Impact, les joueurs seront confrontés à de nombreux défis, et chaque mission de défi apporte un plaisir différent. Cependant, il est également difficile de relever ces défis et de récupérer le pouvoir immortel perdu. Voici comment accomplir cette tâche. Tout d’abord, les joueurs doivent explorer tous les recoins du monde du jeu pour trouver le pouvoir féerique dispersé. Ces pouvoirs magiques peuvent être cachés dans des vallées, des grottes ou d’autres lieux secrets. Utilisez les compétences et les capacités de votre personnage pour vous aider à les découvrir. Deuxièmement, faire équipe avec d’autres joueurs est un excellent moyen d’accomplir des missions. Explorer en groupe peut augmenter vos chances de trouver Xianli et de terminer la tâche rapidement. Faites équipe avec des amis ou d'autres joueurs pour explorer le monde ensemble, vous entraider et collecter davantage de pouvoirs féeriques. Enfin, méfiez-vous des ennemis et des pièges. Comment terminer le processus de collecte du pouvoir immortel dispersé dans Xun Yuanshen

See all articles