我知道這篇文章會顯得重複,但我讀了所有這種文章和發展的樣本,以測試主題如何在內存中查找對象的大小?
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
我有一個類白化任何屬性或領域,它只是測試它的大小而已。
[Serializable]
public class MemberStateModel
{
}
我創建了一個對象,並通過波紋管代碼得到它的大小:
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;
}
}
現在的規模它顯示號碼159,由該帖子中,我認爲,這意味着我的O大小爲159kbyte但 我認爲它不正確的方式和一個空的物體不能有這樣的大小,這是真的嗎?
,因爲我的一些用戶的數據存儲在會話,如果這種規模的新增用戶在我的網站成長起來,我將需要更多的物理內存來處理我的web應用程序
我不認爲你可以使用反射,序列化或任何其他基於代碼的方法找到對象的確切大小。我認爲你最簡單的選擇是使用Memory Profiler或使用[Windbg](http://www.windbg.org/)和sos.dll,轉儲堆並檢查對象大小。使用內存分析器或調試器的好處還在於,您可以在目標環境中檢查實際的生產代碼。 – PHeiberg
@PHeiberg,我想你有權利,我現在要去測試它 – motevalizadeh