Фрагментация кучи больших объектов, проблемы с массивами

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

Кто-нибудь знает, почему это происходит, хотя по определению это не должен быть большой объект?

Memroy snapshot of my application using ANTS Memory Profiler

small double arrays are also affected by this (only 70 elements in the array)

8
задан Oliver Bernhardt 3 August 2012 в 09:46
поделиться