Gambas 3/Gambas3LeLangage/L'orienté objet avec Gambas/Le cycle de vie des objets

Un livre de Wikilivres.

Cycle de vie des objets[modifier | modifier le wikicode]

Quand vous créez un objet avec New, une partie de la mémoire (sur vos barrettes de RAM) est réservée pour stocker toutes les informations relatives à cet objet.

Dans les langages bas-niveau (C, C++) ou même en VBA, vous devez libérer la mémoire car, sans cela, toute la mémoire sera un jour prise et votre ordinateur ne pourra plus fonctionner. C'est ce qu'on appelle : "fuite de mémoire" ou "Memory leak".

Vous n'avez pas réellement besoin de gérer la mémoire avec Gambas car il gère la mémoire pour vous comme Java ou .NET.

Dans le wiki officiel, il est mentionné :

«

Il n'y a pas de ramasse-miettes (garbage collector) en Gambas. Chaque objet a un compteur de références qui est incrémenté chaque fois que l'objet est référencé par n'importe quelle variable, tableau, collection ou autre objet, et décrémenté quand il est libéré.

Ce compteur de références est mis à zéro lors de la création de l'objet, et quand il revient à zéro après la libération d’une référence, l'objet est libéré.

»


Il faut donc respecter cette bonne pratique en programmation (quel que soit le langage) :

Quand vous n'avez plus besoin d'un objet, assignez la valeur Null à la variable qui référence l'objet devenu inutile comme ci-dessous :

monObjet = Null

Ceci modifiera le compteur de références et Gambas libérera plus rapidement de l'espace mémoire pendant l'exécution de votre programme.

Pas besoin de faire cela si votre programme s'arrête juste après. Bien entendu, ceci est important si votre programme fonctionne sur une longue durée.

À retenir :

  • Gambas s'occupe de tout. Pas besoin de gérer la mémoire.
  • Une référence Null libérera indirectement l'objet.

Vous pouvez faire fonctionner l'exemple donné dans la wikipage relative au constructeur et le destructeur.