public static void Main()
{
int size = 250000;
var a = new int[size];
for (int i = 0; i < size; i++)
Console.WriteLine("{0}", a[i]);
}
Когда я тестировал приведенный выше код с CLRProfiler, он сказал мне, что код выделяет примерно 40 МБ.Около 20 МБ выделяется для String
, от 9 МБ до Char[]
, от 5 МБ до StringBuilder
и от 3 МБ до Int32
.
public static void Main()
{
int size = 250000;
var a = new int[size];
for (int i = 0; i < size; i++)
Console.WriteLine("0");
}
Это выделяет около 5 МБ.4 МБ выделено на Char[]
.
Единственное, что я получаю, это то, что массив a
должен требовать 1 МБ (250 000 * 4).
Почему такая огромная разница?Почему все эти объекты требуются для первого кода и как мне уменьшить выделение памяти?