Les trois approches de gestion de la mémoire : le ramasse-miettes, le comptage des références et la propriété
Photo : Telerik.com

Les trois approches de gestion de la mémoire : le ramasse-miettes, le comptage des références et la propriété

Chaque méthode permettant de libérer de la mémoire a un coût : un temps de latence, un débit ou un effort de la part du programmeur.

Tout programme doit répondre à une question : quand libérer la mémoire allouée ? Il existe trois réponses courantes, et chacune implique un compromis différent.

Collecte automatique des déchets

Le programme continue à distribuer librement ; périodiquement, une équipe de collecte des déchets fait le tour pour repérer les zones où plus personne ne vient chercher les objets, puis les récupère.

  • Avantages : le programmeur n'a pratiquement pas besoin de réfléchir, aucun risque d'utiliser de la mémoire déjà libérée
  • Inconvénients : des temps d'arrêt imprévisibles lors de l'exécution du ramasse-miettes, et une consommation de RAM supérieure au nécessaire

Convient aux services de serveurs et aux applications métier — où le débit prime sur la latence maximale.

Nombre de références

Chaque objet est associé à un compteur. L'ajout d'une référence fait augmenter ce compteur, sa suppression le fait diminuer, et lorsqu'il atteint 0, l'objet est immédiatement libéré.

  • Avantages : libération au bon moment, pas d'arrêt inopiné
  • Inconvénients : coût à chaque affectation, et incapacité à gérer les cycles de référence — si A contient B et B contient A, les deux ne reviennent jamais à 0

Propriété et emprunt

Le compilateur surveille qui occupe la mémoire et insère des instructions de libération aux bons endroits dès la compilation. Pas de ramasseur, pas de compteur, aucun coût à l'exécution.

  • Avantages : aussi rapide et prévisible que la gestion manuelle, mais plus sûr
  • Inconvénients : l'auteur doit s'adapter à un nouveau mode de pensée, et certaines structures de données deviennent difficiles à exprimer

Il n'y a pas de choix gagnant à coup sûr

Les systèmes en temps réel et les logiciels embarqués optent pour la troisième approche, car aucun temps d'arrêt n'est toléré. Les applications web optent pour la première approche, car le gain de temps pour l'utilisateur prime sur quelques dizaines de millisecondes. Les deux approches sont valables dans leur contexte respectif.

Chia sẻ

Thảo luận