Salut je voudrai savoir si je peux lister tout les objets qui ont étés crés et qui sont toujours présent(tobject, tstringlist,...) par mon applie, afin de faire un sizeof() dessus pour connaitre leur consommation mémoire?
Salut je voudrai savoir si je peux lister tout les objets qui ont étés crés et qui sont toujours présent(tobject, tstringlist,...) par mon applie, afin de faire un sizeof() dessus pour connaitre leur consommation mémoire?
Que la source soit avec moi!
Jérôme JEAN-MARAULT
Salut!
SizeOf() ne te donneras pas la consommation de mémoire de ton objet mais celui du pointeur, c'est à dire toujours 4 octets par objet (essaie-le avec un TObject et un TStringList, tu vas voir les pointeurs ont la même taille).
Bref, tu n'es pas plus avancé....
-Slimjoe
en effet j'ai commis une erreur mais comment faire, je suis sur que c'est possible
Que la source soit avec moi!
Jérôme JEAN-MARAULT
Ça m'intéresse vraiment ce problème...
Mais j'ai beau y réfléchir, je bute toujours sur la même chose : comment mesurer la taille en mémoire d'une méthode ? Free(), par exemple, ça occupe combien d'octets ?
Pour ce qui est de compter les objets créés, perso, je modifierais la source de TObject et TApplication. Dans TApplication, j'ajouterais un TObjectList et dans TObject je modifierais le constructeur pour qu'il ajoute self à Application.MonObjectList et qu'il y retire self dans le destructeur. Pour connaître le nombre d'objets créés tu fais alors Application.MonObjectList.Items.Count.
C'est pas une technique ultra sure (rarement une bonne idée de jouer dans les sources de Delphi) mais bon... si ce n'est que pour s'amuser pourquoi pas
-Slimjoe
Très bonne question je cherche aussi, pour les procédure moi j'ai créé un objet memlog qui contabilise la mémoire prog au moment ou tu pose un beginmemlog et lors du endmemlog puis fais des stat sur la consommation ponctuelle max moyenne... mais cela oblige de poser les deux bornnes dans le prog à chaque fois
quant au listing des objets on peu ptet surcharger tobject sans modifier la vcl en modifiant le aftercreate et le beforedestroy pour renseigner la liste des objets
Que la source soit avec moi!
Jérôme JEAN-MARAULT
Il y aussi des logiciels qui sont spécialisés dans la mesure de mémoire RAM qu'utilise une application. Cherche un peu sur le Web et tu vas trouver :-)
sjrd, ancien rédacteur/modérateur Delphi.
Auteur de Scala.js, le compilateur de Scala vers JavaScript, et directeur technique du Scala Center à l'EPFL.
Découvrez Mes tutoriels.
J'utilise FastMM4 pour détecter les fuites de mémoire, plutot pas mal.
Section Delphi
La mine d'or: La FAQ, les Sources
Un développement compliqué paraitra simple pour l'utilisateur, frustrant non ?
Notre revanche ? l'inverse est aussi vrai ;-)
je connais ces logiciels mais je ne cherche pas les fuites mémoires mais l'évolution de mon prog et de sa mémoire, de façon a optimiser les procédures couteuses et les objets trop lourds
Que la source soit avec moi!
Jérôme JEAN-MARAULT
Regarde peut être du coté des gestionnaires mémoire sur CodeCentral (Borland).
Tutoriels Delphi Win32/Delphi .NET/Oracle/PowerShell - FAQ Delphi - FAQ Delphi .NET
Beatus, qui prodest, quibus potest.
j'ai pas trouvé, de plus c bizare aucunes des sources ne me sont plus disponibles j'ai une erreur a chaque fois, vous avez lz même problème?
Ou borland laisserait-il tombé code central?
autrement la taille mémoire d'un objet =
taille de toutes ses propriétés
+ 4 octets de pointeur *(nb fonctions/procédures)
+ 4 octets de pointeur *(nb objets)
+ taille de ses objets...
Que la source soit avec moi!
Jérôme JEAN-MARAULT
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager