Хороший способ оценить / рассчитать размер объекта в памяти - PullRequest
1 голос
/ 29 сентября 2010

Допустим, у меня есть объект Tom, у которого есть класс Person.

Class Person

String Name
DateTime BirthDate
String Role
Int32 Salary

Можете ли вы дать мне приблизительный объем памяти, если он имеет следующие значения:

Имя = Том. Дата рождения = 01.01.1990. Роль = Пользователь. Зарплата = 30000

Не могли бы вы также дать мне некоторое представление о том, как был сделан расчет?

1 Ответ

2 голосов
/ 29 сентября 2010

Чтобы получить истинную цифру, используйте CLR profiler .Чтобы сделать это программно, используйте sizeof (работает только для типов значений).Вы также можете сделать это, ссылаясь на ГК напрямую , как это ...

long StopBytes = 0;
foo myFoo;

long StartBytes = System.GC.GetTotalMemory(true);
myFoo = new foo();
StopBytes = System.GC.GetTotalMemory(true);
GC.KeepAlive(myFoo); // This ensure a reference to object keeps object in memory

long TotalBytes = StopBytes - StartBytes;
MessageBox.Show("Size is " + TotalBytes.ToString());
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...