Недавно читал несколько книг о модели памяти для ядра .net и у меня все еще есть вопрос без ответа, который, я надеюсь, кто-то уже знает ответ и может поделиться этим с остальными.
Итак - простой тест:1. Создан простой класс «MyType» с 3 реквизитами:
int a;
int b;
double c;
Сейчас - я создал список, зарезервировал 1000.000 элементов и заполнил его:
List<MyType> someList = new List<MyType>(1000000);
for (int i = 0; i < 1000000; i++)
{
someList.Add(new MyType());
}
Итак - теперь, если яиспользуйте класс для объявления «MyType» - программа потребляет 42 МБ памяти.При использовании struct - потребляет 25 МБ.Зная, что класс находится в куче и что сборка x86 Release, каждый из моих объектов, хранящихся в куче, должен иметь служебную память хранилища адресов в 4 байта.Таким образом, 1 миллион объектов должен создать 4 МБ «накладных расходов».Поэтому я ожидаю, что классы будут использовать 29 МБ, а не 42 МБ.Так что здесь должно быть что-то еще ... это именно тот вопрос, который я хотел бы задать.
Спасибо!