Я пишу аналитическое приложение на C #, которое должно иметь дело с большим объемом памяти. Я использую ANTS Memory Profiler 7.4 для оптимизации управления памятью. При этом я понял, что все мои массивы double[,], которые я использую (и которые мне нужны ), размещены в LOH, хотя самый большой из этих массивов составляет около 24 000 байт. Объекты не должны помещаться туда до 85.000 байт, насколько я знаю. Проблема сейчас в том, что поскольку у меня есть несколько тысяч экземпляров этих массивов double[,] у меня много фрагментации памяти (около 25% от общего объема используемой памяти — это свободная память, которую я не могу использовать ). размер некоторых из этих массивов, хранящихся в LOH, составляет всего 1,036 байта. Проблема в том, что иногда мне приходится выполнять более масштабный анализ, и тогда я получаю исключение из-за нехватки памяти из-за массивной потери памяти из-за фрагментации LOH.
Кто-нибудь знает, почему это происходит, хотя по определению это не должен быть большой объект?