среда, 12 марта 2014 г.

Как получить размер объекта в .Net

Вы все знаете, что в .Net память управляется CLR и многих, привычный для не управляемого кода вещей тут нет, например оператора sizeof. То есть, он, конечно, есть. Но умеет возвращать размеры только простых значимых типов типа char. При попытке натравить его на любой управляемый класс вы получите ошибку:

error CS0208: Cannot take the address of, get the size of, or declare a pointer to a managed type ('System.Console')


Многие разработчики вообще не парятся что и сколько места занимает и на какой срок, но если вам интересно, то единственный более-менее достоверный  способ узнать объем памяти, занимаемый объектом, это сравнив размер используемой памяти до инициализации объекта и после, например:

            long mem = GC.GetTotalMemory(true);
            int[] intArray = new int[100000];
            mem = GC.GetTotalMemory(true) - mem;
            //В mem - размер объекта в байтах

Комментариев нет:

Отправить комментарий