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