Yönetilmeyen türler, yani değer türleri için yapılar:
Marshal.SizeOf(object);
Yönetilen nesneler için yakınlaştığım bir tahmin.
long start_mem = GC.GetTotalMemory(true);
aclass[] array = new aclass[1000000];
for (int n = 0; n < 1000000; n++)
array[n] = new aclass();
double used_mem_median = (GC.GetTotalMemory(false) - start_mem)/1000000D;
Serileştirmeyi kullanmayın.Bir ikili biçimlendirici üstbilgiler ekler, böylece sınıfınızı değiştirebilir ve eski bir serileştirilmiş dosyayı değiştirilmiş sınıfa yükleyebilirsiniz.
Ayrıca size bellekteki gerçek boyutu söylemeyecek veya bellek hizalamasını hesaba katmayacaktır.
[Düzenle] Sınıfınızın her özelliğinde BiteConverter.GetBytes (prop-değeri) 'i tekrar tekrar kullanarak, içeriği bayt cinsinden alırsınız, bu, sınıfın veya referansların ağırlığını saymaz, ancak gerçeğe çok daha yakındır. Veriler için bir bayt dizisi ve boyut önemliyse işaretçi dökümünü kullanarak değerlere erişmek için yönetilmeyen bir proxy sınıfı kullanmanızı öneririm, bunun hizalı olmayan bellek olacağını unutmayın, bu nedenle eski bilgisayarlarda yavaş olacaktır, ancak MODERN RAM'deki BÜYÜK veri kümeleri olacaktır. RAM'den okumak için boyutun en aza indirilmesi, hizalanmamış olmaktan daha büyük bir etki olacağından, önemli ölçüde daha hızlıdır.