Большие массивы и фрагментация LOH. Что такое принятая конвенция?
У меня есть другой активный вопросВОТ относительно некоторых безнадежных проблем с памятью, которые могут включать фрагментацию LOH среди, возможно, других неизвестных.
Каков мой вопрос сейчас, каков принятый способ делать вещи? Если мое приложение должно быть выполнено в Visual C #, и мне нужно иметь дело с большими массивами до уровня int [4000000], как я могуне быть обреченным на отказ сборщика мусора иметь дело с LOH?
Казалось бы, я вынужден делать любые большие массивы глобальными и никогда не использовать слово «новый» вокруг любого из них. Таким образом, у меня остались неблагодарные глобальные массивы с переменными «maxindex» вместо аккуратных по размеру массивов, которые передаются функциями.
Мне всегда говорили, что это плохая практика. Какая альтернатива есть?
Есть ли какая-то функция на мелодиюSystem.GC.CollectLOH("Seriously")
? Есть ли какой-нибудь способ передать сборщик мусора на что-то другое, кроме System.GC?
В любом случае, каковы общепринятые правила работы с большими (> 85 КБ) переменными?