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

Framework .NET Discussion :

Connaitre la mémoire occupé par un objet


Sujet :

Framework .NET

  1. #1
    Membre régulier

    Profil pro
    Inscrit en
    Juin 2008
    Messages
    92
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 92
    Points : 115
    Points
    115
    Par défaut Connaitre la mémoire occupé par un objet
    Bonjour,

    J'ai cherché un peu partout, mais je n'ai pas trouvé de moyen simple pour connaitre la mémoire occupé par un objet, en .NET.
    En existe-t-il ?

    Je pourrais implémenter moi même une méthode renvoyant la taille de l'objet ( à coup de sizeof sur ses membres ), mais ce serait trop limitant, car uniquement faisable pour les objets que j'ai moi-même codé. Je pourrais bien sur implémenter des méthodes d'éxtensions me direz-vous. Mais ça ne prendrait pas en compte les membres privés.
    De plus, ce serait vraiment galère niveau maintenabilité, devoir créer une méthode par type d'objet que je suis susceptible d'utiliser.

    L'objectif final étant la conception d'un système de cache. Afin de limiter la mémoire maximum occupé par ce cache, j'aurais voulu controler la taille des objets que je met en cache. Mais peut être que je ne m'y prends pas de la bonne manière ?

    Je précise que la solution doit être faisable dans un contexte d'éxecution temps réel, dans un jeu video plus précisement.

    Ca fait un moment que je recherche en vain une solution, quelqu'un aurait de l'éxperience sur le sujet ? ou une bonne idée ?

    Merci.

  2. #2
    Membre averti

    Inscrit en
    Septembre 2004
    Messages
    105
    Détails du profil
    Informations forums :
    Inscription : Septembre 2004
    Messages : 105
    Points : 339
    Points
    339
    Par défaut
    Question intéressante. La seule solution que je vois, c'est d'utiliser la Reflection pour introspecter l'objet et ces relations (récursivement).

  3. #3
    Membre régulier

    Profil pro
    Inscrit en
    Juin 2008
    Messages
    92
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 92
    Points : 115
    Points
    115
    Par défaut
    Merci pour ta réponse KPixel, mais sauf erreur de ma part, la reflection ne permet-elle pas de connaitre uniquement les membres publiques ?

  4. #4
    Inactif  
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Janvier 2007
    Messages
    6 604
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : Janvier 2007
    Messages : 6 604
    Points : 13 314
    Points
    13 314
    Par défaut
    Citation Envoyé par Idrakis Voir le message
    sauf erreur de ma part, la reflection ne permet-elle pas de connaitre uniquement les membres publiques ?
    Si, il y a erreur de ta part
    La refllection permet de connaitre n'importe quoi; même d'appeler des méthodes privées.

    Je ne réponds pas aux questions techniques par MP ! Le forum est là pour ça...


    Une réponse vous a aidé ? utiliser le bouton

    "L’ennui dans ce monde, c’est que les idiots sont sûrs d’eux et les gens sensés pleins de doutes". B. Russel

  5. #5
    Membre régulier

    Profil pro
    Inscrit en
    Juin 2008
    Messages
    92
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 92
    Points : 115
    Points
    115
    Par défaut
    Oui en effet, jusque la je faisait type.GetFields, qui ne me donnaient uniquement les champs publiques, mais du coup je viens de chercher autre chose, et je suis tomber sur type.GetMembers, qui là, me renvoie bien tout ce qu'il faut.

    Je vais voir tout de suite si cette méthode n'est pas trop pénalisante pour un contexte temps réel. Si cela convient, je mettrais le tag résolu.

    Merci pour vos réponses.

  6. #6
    Inactif  
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Janvier 2007
    Messages
    6 604
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : Janvier 2007
    Messages : 6 604
    Points : 13 314
    Points
    13 314
    Par défaut
    Citation Envoyé par Idrakis Voir le message
    Oui en effet, jusque la je faisait type.GetFields, qui ne me donnaient uniquement les champs publiques,
    Non, le GetFields retourne très bien les champs privés. IL suffit de préciser l'option

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    BindingFlags.NonPublic
    Le GetMember retourne lui les propriétés ET les champs.

    La aussi, il y a une surcharge avec l'option BindingFlags.

    Je ne réponds pas aux questions techniques par MP ! Le forum est là pour ça...


    Une réponse vous a aidé ? utiliser le bouton

    "L’ennui dans ce monde, c’est que les idiots sont sûrs d’eux et les gens sensés pleins de doutes". B. Russel

  7. #7
    Membre averti Avatar de roster
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    397
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 397
    Points : 426
    Points
    426
    Par défaut
    Citation Envoyé par Bluedeep Voir le message
    Le GetMember retourne lui les propriétés ET les champs.

    La aussi, il y a une surcharge avec l'option BindingFlags.
    Merci, je n'avais jamais fait attention à cette surcharge très utile!

Discussions similaires

  1. Espace mémoire occupé par un objet en C++
    Par Massyl dans le forum Bibliothèques
    Réponses: 4
    Dernier message: 11/12/2012, 17h31
  2. Réponses: 7
    Dernier message: 23/08/2007, 19h40
  3. [Optimisation] Mémoire occupée par des images
    Par Crowell dans le forum AWT/Swing
    Réponses: 8
    Dernier message: 23/05/2007, 16h34
  4. Réponses: 3
    Dernier message: 09/03/2007, 14h32
  5. [JVM]Espace mémoire occupé par un objet
    Par devtele dans le forum Général Java
    Réponses: 6
    Dernier message: 29/12/2005, 23h15

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