Это не может быть прямым ответом на ваш вопрос, но не думаете ли вы, что возможно, что 12 миллионов экземпляров класса, содержащего статический массив, а не сам массив, могут вызывать эту проблему с памятью?
Первое, что я хотел бы сделать, прежде чем пытаться оптимизировать, - это абсолютно точно установить причину проблем.
Используйте профилировщик памяти и выясните причину проблемы с памятью, прежде чем выяснить, как именно ее оптимизировать. Временами вы будете удивлены, когда проведете расследование и обнаружите, что истинная причина не всегда может быть такой, как вы ожидаете.
Вы можете использовать CLR profiler или пробную версию коммерческого профилировщика, например ANTS (по крайней мере, для начала).