Принудительная сборка мусора массивов, C #
У меня есть проблема, когда пара трехмерных массивов выделяет огромный объем памяти, и программе иногда требуется заменить их на большие / меньшие и выдает исключение OutOfMemoryException.
Пример: имеется 5 выделенных массивов по 96 МБ (200x200x200, 12 байтов данных в каждой записи), и программе необходимо заменить их на 210x210x210 (111 МБ). Это делает это способом, подобным этому:
array1 = new Vector3[210,210,210];
Где array1-array5 - те же поля, которые использовались ранее. Это должно установить старые массивы в качестве кандидатов на сборку мусора, но, по-видимому, сборщик мусора не действует достаточно быстро и оставляет старые массивы выделенными до выделения новых - что вызывает OOM - тогда как если они освобождены до новых распределений, пространство должно быть довольно.
То, что я ищу, - это способ сделать что-то вроде этого:
GC.Collect(array1) // this would set the reference to null and free the memory
array1 = new Vector3[210,210,210];
Я не уверен, что полная сборка мусора будет хорошей идеей, поскольку этот код может (в некоторых ситуациях) выполняться довольно часто.
Есть ли правильный способ сделать это?