Question

J'essaie de trouver un moyen de déterminer au moment de l'exécution la quantité de mémoire qu'une classe donnée utilise dans .NET.En utilisant Marshal.SizeOf() est sorti, car il ne fonctionne que sur les types valeur.Existe-t-il un moyen de vérifier exactement la quantité de mémoire utilisée par une classe ?

Était-ce utile?

La solution

Je n'ai commencé que récemment à étudier ce genre de choses, mais j'ai découvert que les profileurs de mémoire peuvent fournir des informations assez détaillées sur les instances d'objets au sein de votre application.

En voici quelques-uns qui valent la peine d’être essayés :

Autres conseils

Je conviens qu'un profileur de mémoire est le moyen le plus simple d'obtenir les informations que vous recherchez.En plus des deux cités précédemment, je recommande JetBrains pointTrace, qui est à la fois un profileur de performances et un profileur de mémoire.

Si vous voulez le faire vous-même et êtes prêt à approfondir les entrailles du CLR, vous pouvez utiliser le API de profilage .NET, qui est une API non gérée qui (comme le dit Microsoft) :"Permet à un profileur de surveiller l'exécution d'un programme par l'exécution de la langue commune (CLR)." Il n'est pas exactement destiné à une utilisation occasionnelle, mais il a une énorme quantité de fonctionnalités.

il suffit de créer un lien vers la question SO connexe :

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top