IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage Delphi Discussion :

Garbage collector pour ou contre


Sujet :

Langage Delphi

  1. #1
    Membre actif
    Homme Profil pro
    libre
    Inscrit en
    Juin 2019
    Messages
    205
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations professionnelles :
    Activité : libre

    Informations forums :
    Inscription : Juin 2019
    Messages : 205
    Points : 292
    Points
    292
    Par défaut Garbage collector pour ou contre
    Bonjour

    Je sais que cette question a été posé plusieurs fois sur les forums du Devloppez ...je veux savoir l'avis de la communauté Delphi sur le sujet en 2019.. il y a quelques années j'étais contre je pensais que la gestion du mémoire fait partie du programmation... avec le temps il s’avérait qu'il s'agit d'une operation LowLevel dont le system est mieux placé pour la gérer ...c'est un peu comme la question en C qui va mieux gérer la directive REGISTER l'utilisateur ou compilateur.

    Maintenant je suis 100% pour.

  2. #2
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 091
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 091
    Points : 41 069
    Points
    41 069
    Billets dans le blog
    62
    Par défaut
    Bonjour,

    Étayez votre raison ! Garbage collector c'est la première fois que j'en croise le terme en programmation Delphi contrairement aux SGBD, à moins que vous parliez de la détection des fuites mémoires

    cette question a été posée plusieurs fois sur les forums du Développez
    où, merci de mettre les références
    MVP Embarcadero
    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes)
    SGBD : Firebird 2.5, 3, SQLite
    générateurs États : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Windows 11, Ubuntu, Androïd

  3. #3
    Membre expert
    Avatar de pprem
    Homme Profil pro
    MVP Embarcadero - formateur&développeur Delphi, PHP et JS
    Inscrit en
    Juin 2013
    Messages
    1 876
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : MVP Embarcadero - formateur&développeur Delphi, PHP et JS
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juin 2013
    Messages : 1 876
    Points : 3 614
    Points
    3 614
    Par défaut
    Pour Delphi le garbage collector est intimement associé à ARC (automatic reference counting) et aux différents compilateurs qui le géraient sur les objets.

    A partir de la 10.4 on devrait en être totalement débarrassé sur les objets, tous les compilateurs fonctionnant à nouveau comme les versions desktop et je trouve que c'est une bonne chose : l'habitude de détruire ce qu'on crée me semble plus saine que de faire n'importe quoi et espérer que les programmes s'en débrouillent.

  4. #4
    Membre actif
    Homme Profil pro
    libre
    Inscrit en
    Juin 2019
    Messages
    205
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations professionnelles :
    Activité : libre

    Informations forums :
    Inscription : Juin 2019
    Messages : 205
    Points : 292
    Points
    292
    Par défaut
    Merci pour ta réponse je utilise D7 et D2009 .. il se peut que tu parle des trucs que je ne comprends pas .. d'abord pour les objet il existe des Libs Gc pour Delphi basé sur le traditionnel gestionnaire de mémoire Getmem,Reallocmem et Freemem. les autres types basée sur le RC ne sont pas consernés :string,interface...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    TNewClass=class(TGCObject)

  5. #5
    Membre expert
    Avatar de pprem
    Homme Profil pro
    MVP Embarcadero - formateur&développeur Delphi, PHP et JS
    Inscrit en
    Juin 2013
    Messages
    1 876
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : MVP Embarcadero - formateur&développeur Delphi, PHP et JS
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juin 2013
    Messages : 1 876
    Points : 3 614
    Points
    3 614
    Par défaut
    Sur D7 et D2009 la question ne se posait pas vraiment : pas de garbage collector sur les objets, c'est apparu pour les compilateurs iOS et Android (et disparaît donc cette année).

  6. #6
    Expert éminent sénior
    Avatar de Paul TOTH
    Homme Profil pro
    Freelance
    Inscrit en
    Novembre 2002
    Messages
    8 964
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Freelance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2002
    Messages : 8 964
    Points : 28 448
    Points
    28 448
    Par défaut
    Alors, parlons gestion de la mémoire

    1) gestion manuelle
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    var
      o: TMonObject;
    begin
      o := TMonObject.Create;
      try
       // ....
      finally
        o.Free;
      end;
    end;
    2) gestion par ARC
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    var
      o: TMonObject;
    begin
      o := TMonObject.Create;
    end; // o.Free automatique car la variable n'est plus visibile
    3) gestion par Garbage Collector
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    var
      o: TMonObject;
    begin
      o := TMonObject.Create;
    end; // o sera libéré un jour, quand le Garbage Collector aura détecté que l'objet n'est plus utile
    Delphi utilise le modèle manuel depuis le début.
    l'ARC n'est utilisé que pour les types dynamiques (string, Array of) et les Interfaces.
    Avec l'arrivée des plateformes mobiles, Embarcadero a ajouté le modèle ARC sur les objets.
    La première version du compilateur Linux a également utilisé ARC mais c'est maintenant une gestion manuelle.
    Les prochaines versions supprimeront l'ARC sur Mobile également.

    A noter, qu'une bonne partie des framework Delphi utilise une libération automatisée (et non automatique) de la mémoire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    procedure TForm1.FormCreate(Sender: TObject);
    begin
      with TButton.Create(Self) do
      begin
         Parent := Self;
         Caption := 'Hello';
        SetBounds(10, 10, 80, 25);
      end;
    end;
    l'objet bouton possède à la fois un Owner et un Parent, deux bonnes raisons pour qu'il soit détruit explicitement quand la fiche sera détruite...et c'est ce lien fort Parent/Enfant qui pose des tas de problèmes avec ARC.

    Pourquoi avoir tenté l'ARC et pourquoi l'avoir supprimé ? à lire [ici]
    Developpez.com: Mes articles, forum FlashPascal
    Entreprise: Execute SARL
    Le Store Excute Store

  7. #7
    Membre actif
    Homme Profil pro
    libre
    Inscrit en
    Juin 2019
    Messages
    205
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations professionnelles :
    Activité : libre

    Informations forums :
    Inscription : Juin 2019
    Messages : 205
    Points : 292
    Points
    292
    Par défaut
    C'est clair maintenant je ne doutais pas de ta réponse.

    Montor

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Pour ou Contre le Garbage Collector ?
    Par deneb dans le forum Débats sur le développement - Le Best Of
    Réponses: 481
    Dernier message: 23/11/2010, 16h42
  2. Garbage collector en C++, pour ou contre ?
    Par Klaim dans le forum C++
    Réponses: 70
    Dernier message: 05/08/2010, 14h03
  3. Réponses: 12
    Dernier message: 29/06/2009, 07h20
  4. Réponses: 1
    Dernier message: 03/06/2009, 00h25

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo