J'ai un objet statique à l'exécution qui est fondamentalement une liste d'autres objets (ints, chaînes, dictionnaire, autres objets, etc.). Est-il possible de déterminer la mémoire utilisée par mon objet statique "liste d'autres objets" à l'exécution? Cela serait utile pour l'instrumentation et les rapports.Quelle est l'empreinte mémoire d'un objet lors de l'exécution dans .NET?
Répondre
Vous demandez probablement quelque chose que vous pourriez appeler à partir de votre code (que je voudrais savoir aussi), mais je pense que je devrais mentionner Ants profiler [http://www.red-gate.com/Products/ants_profiler/index.htm] dans le cas où les autres ne cherchent pas quelque chose de spécifique. Il vous dira toutes sortes d'informations sur votre code pendant son exécution, y compris la quantité de mémoire utilisée.
De leur site ...
mémoire de profil pour comprendre comment votre application utilise la mémoire, et pour localiser fuites de mémoire. Le profileur de mémoire vous permet de prendre des instantanés à n'importe quel point lors de l'exécution de votre programme , vous pouvez donc voir quelle mémoire est en cours d'utilisation à ce stade. Vous pouvez prendre plusieurs instantanés à des moments différents pendant que votre application est en cours d'exécution, donc vous pouvez comparer la mémoire de l'application états.
Sizeof peut être utilisé sur les types de valeur il y a aussi Marshal.SizeOf qui peut être utilisé avec des conseils pour .NET:
Mais ... ce n'est pas exactement le total coût puisque l'exécution alloue des octets supplémentaires pour les classes pour des choses comme des blocs de synchronisation.
Si vous êtes vraiment intéressé à mesurer ce genre de chose, cependant, vous devez utiliser l'API de profilage:
http://msdn.microsoft.com/en-us/library/ms404386.aspx
Ou un outil gratuit comme windbg qui peut faire toutes sortes de choses merveilleuses.
Pas sans profileur. Il est assez difficile juste pour une seule classe - voir here.
Merci pour les réponses. Je pense que mon plan d'attaque initial, car je suis sûr que la plupart des objets seront sérialisables, sera quelque chose comme ceci:
using (MemoryStream memstream = new MemoryStream())
{
BinaryFormatter formatter = new BinaryFormatter();
try
{
formatter.Serialize(memstream, myObjectOfObjects);
mem_footprint += memstream.Length;
}
catch
{
// not a serializable object
}
}
- 1. Quelle est la surcharge de mémoire pour stocker un objet (1 bit) dans memcached?
- 2. Quelle est l'utilisation de Invoke() dans .net?
- 3. Quelle est la surcharge de mémoire pour stocker des données dans un .NET DataTable?
- 4. Analyse de la mémoire d'objet dans .NET
- 5. Quelle mémoire est publiée par didReceiveMemoryWarning/viewDidUnload?
- 6. Quelle est votre fonctionnalité préférée dans .NET?
- 7. Dans quelle langue est écrit .NET Framework?
- 8. Quelle est la meilleure utilisation de .NET DataTable?
- 9. Comment implémenter la mémoire partagée dans .NET?
- 10. Quelle est l'équivilence .NET C# de HTTP_RAW_POST_DATA?
- 11. Quelle est la signification de cet attribut dans .NET
- 12. Quelle est l'inverse de la fonction DataBind() dans ASP .NET
- 13. Quelle est la manière la plus simple de se connecter à un objet serveur distant .NET
- 14. Quelle est l'utilité d'un objet Dispatcher dans WPF?
- 15. Quelle est la bonne façon de tester si un objet est un objet jQuery en javascript?
- 16. Utilisation de la mémoire + .net
- 17. Quelle est la manière la plus appropriée d'utiliser MemoryMappedViewAccessors de .Net 4.0?
- 18. Limitations de la mémoire .NET
- 19. Empreinte mémoire .NET EXE
- 20. Est-ce un problème de gestion de la mémoire lors de l'utilisation de plusieurs threads?
- 21. Lors de la libération de l'objet appartient à un autre objet - gestion de la mémoire xcode
- 22. C#: utilisation de la mémoire d'un objet
- 23. Quelle est la meilleure façon d'afficher des fichiers volumineux sans utiliser de grandes quantités de mémoire?
- 24. Quelle est la meilleure façon de remplacer du texte dans un fichier en utilisant C#/.NET?
- 25. Quelle est l'implémentation STL avec l'empreinte mémoire la plus faible?
- 26. Disposition de la mémoire d'un tableau .NET
- 27. Quelle est la taille maximale d'un fichier mappé en mémoire?
- 28. Quelle est l'équivalence WiX de Environment.SpecialFolder.ApplicationData de .NET?
- 29. Quelle version d'IE est utilisée dans le contrôle de trame WPF .NET 3.5sp1?
- 30. Quelle quantité de mémoire utilise une Hashtable?
Je cherche en effet une implémentation programmatique. Mais je suis d'accord que le profileur ANTS peut certainement être utile dans les bonnes situations :) – Bullines