Для меня уже при более глубоком изучении этого у меня были следующие предположения (они могут быть неточными; я старею для программиста).Класс имеет дополнительное потребление памяти, потому что для его обращения требуется ссылка.Сохраните ссылку, и указатель размера Int32 необходим при 32-битной компиляции.Выделенный всегда в куче (не могу вспомнить, есть ли у C ++ другие возможности, я бы рискнул?)
Краткий ответ, найденный в этой статье, состоит в том, что Object имеет базовый размер 12 байтов + 4 возможно неиспользуемых байта в зависимости отваш класс (без сомнения, что-то связанное с заполнением).
http://www.codeproject.com/Articles/231120/Reducing-memory-footprint-and-object-instance-size
Другие проблемы, с которыми вы столкнетесь, связаны с массивами.Возможность будет управлять вашим собственным смещением в больший массив или массивы.Что, в свою очередь, приближается к чему-то, для чего лучше подойдет более эффективный язык.
Я не уверен, есть ли библиотеки, которые могут эффективно обеспечивать хранение небольших объектов.Вероятно, есть.
Я беру это на себя, использую Structs, управляю своим собственным смещением в большом массиве и использую надлежащие инструкции по упаковке, если он вам подходит (хотя я подозреваю, что это обходится во время выполнения нескольких дополнительных инструкций каждый разВы обращаетесь к неравномерно упакованным данным)
[StructLayout(LayoutKind.Sequential, Pack = 1)]