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

ASP.NET Discussion :

Utilisation des destructeurs en ASP.NET


Sujet :

ASP.NET

  1. #1
    Expert confirmé
    Avatar de Immobilis
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2004
    Messages
    6 559
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 559
    Par défaut Utilisation des destructeurs en ASP.NET
    Salut,

    Quelle est votre opinion sur l'utilisation des destructeurs en ASP.NET?
    On en parle un peu en C++ ou Delphi, mais pas en ASP.NET.
    J'ai mm lu qq part que MS le déconseillait.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    namespace MonNameSpance.BO
    {
        public class ClientEntity
        {
            /// <summary>
            /// Class constructor
            /// </summary>
            static ClientEntity() { }
     
            /// <summary>
            /// Instance constructor
            /// </summary>
            public ClientEntity() { }
     
            /// <summary>
            /// Class destructor
            /// </summary>
            ~ClientEntity() { }
        }
    }
    A+
    "Winter is coming" (ma nouvelle page d'accueil)

  2. #2
    Rédacteur
    Avatar de lutecefalco
    Profil pro
    zadzdzddzdzd
    Inscrit en
    Juillet 2005
    Messages
    5 052
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : zadzdzddzdzd

    Informations forums :
    Inscription : Juillet 2005
    Messages : 5 052
    Par défaut
    Laisse le GC faire son boulot

  3. #3
    Expert confirmé
    Avatar de Immobilis
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2004
    Messages
    6 559
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 559
    Par défaut
    Réponse interessante, mais qui n'explique pas grand chose.
    J'aime bien comprendre.

    A+
    "Winter is coming" (ma nouvelle page d'accueil)

  4. #4
    Rédacteur
    Avatar de lutecefalco
    Profil pro
    zadzdzddzdzd
    Inscrit en
    Juillet 2005
    Messages
    5 052
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : zadzdzddzdzd

    Informations forums :
    Inscription : Juillet 2005
    Messages : 5 052
    Par défaut
    Détruire manuellement des objets prends des ressources.

    Le GC s'autorise une certaine taille mémoire. Lorsque l'appli atteint cette limite, le GC libère automatiquement des objets (lesquels? j'en sais rien )

    Voilà, je le laisse faire sa tambouille perso

  5. #5
    Rédacteur
    Avatar de SaumonAgile
    Homme Profil pro
    Team leader
    Inscrit en
    Avril 2007
    Messages
    4 028
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Team leader
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2007
    Messages : 4 028
    Par défaut
    Le ramasse-miettes (GC) garde une trace de tous les objets alloués. Quand plus aucune référence ne pointe sur un objet (mis à null, ou hors de portée par exemple), il est marqué comme pouvant être "ramassé" c-a-d que la mémoire qu'il occupe peut-être récupérée.
    Pour les objets simples, c'est rapide. Pour les objets complexes utilisant un destructeur (un finalizer en fait), cela impose de créer une méthode Finalize qui est appelée avant l'appel à Dispose qui libère la mémoire managée. Cette méthode Finalize est sensé libérer les ressources non managées de l'objet. Elle ne doit pas être utilisée pour libérer des ressources managées.
    Cette méthode Finalize implique un surcout non négligeable lors de la libération de la mémoire d'un objet. Car les méthodes Finalize sont gérées par un thread séparé (dédié même) de celui du GC appelé finalizer. Ce qui en d'autres termes signifie que tant qu'un objet Finalizable n'a pas été traité par le finalizer, sa mémoire managée ne peut pas être récupérée par le GC.

    Au final, le destructeur (la méthode Finalize) ne doit être utilisée pour les ressources non-managées (et seulement s'il y a des ressources non managées).

    Pour info, ta méthode est transformée par le compilateur en
    :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    protected override void Finalize()
    {
    }
    Besoin d'un MessageBox amélioré ? InformationBox pour .NET 1.1, 2.0, 3.0, 3.5, 4.0 sous license Apache 2.0.

    Bonnes pratiques pour les accès aux données
    Débogage efficace en .NET
    LINQ to Objects : l'envers du décor

    Mon profil LinkedIn - MCT - MCPD WinForms - MCTS Applications Distribuées - MCTS WCF - MCTS WCF 4.0 - MCTS SQL Server 2008, Database Development - Mon blog - Twitter

  6. #6
    Expert confirmé
    Avatar de Immobilis
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2004
    Messages
    6 559
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 559
    Par défaut
    Ok, merci
    "Winter is coming" (ma nouvelle page d'accueil)

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

Discussions similaires

  1. Création des pages Web ASP.NET en utilisant le moteur de vue Razor
    Par Hinault Romaric dans le forum Développement Web avec .NET
    Réponses: 0
    Dernier message: 26/08/2011, 17h41
  2. Reinitialisation des contrôles avec Asp.Net
    Par laurent_diep dans le forum ASP.NET
    Réponses: 12
    Dernier message: 11/07/2007, 11h39

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