Je sais que cet article peut semble faire double emploi, mais je l'ai lu tous ces articles et de développer un échantillon pour tester le thèmecomment trouver la taille de l'objet en mémoire?
Find size of object instance in bytes in c# http://www.codeproject.com/Questions/177604/Size-of-a-class-in-c How to get object size in memory? Getting the size of a field in bytes with C# http://blogs.msdn.com/b/cbrumme/archive/2003/04/15/51326.aspx
j'ai une classe voile blanc des propriétés ou des champs, il est vide juste pour tester la taille de celui-ci.
[Serializable]
public class MemberStateModel
{
}
créer un objet et obtenir la taille de celui-ci par des codes ci-dessous:
static void Main(string[] args)
{
MemberStateModel o = new MemberStateModel() {};
long size;
using (Stream s = new MemoryStream())
{
BinaryFormatter formatter = new BinaryFormatter();
formatter.Serialize(s, o);
size = s.Length;
}
}
maintenant en taille, il indique le nombre 159, par que les postes je pense que cela signifie ma taille o est 159kbyte mais i pense que c'est pas correct et qu'un objet vide ne peut pas avoir cette taille, est-ce vrai?
il est très important pour moi parce que je stocke les données de certains utilisateurs en session et si cette taille grandit par les utilisateurs ajoutés dans mon site, je aurai besoin physiquement plus de mémoire pour gérer mon application Web
Je ne pense pas que vous pouvez trouver la taille exacte d'un objet en utilisant la réflexion, la sérialisation ou toute autre approche basée sur le code. Je pense que votre option la plus simple est d'utiliser un Memory Profiler ou d'utiliser [Windbg] (http://www.windbg.org/) et sos.dll, vider le tas et vérifier la taille de l'objet là. Un avantage de l'utilisation des profileurs de mémoire ou du débogueur est également que vous pouvez vérifier votre code de production réel dans son environnement cible. – PHeiberg
@ PHeiberg, je pense que vous avez raison et je vais aller le tester maintenant – motevalizadeh