Вызов TrimExcess
после загрузки списка, скорее всего, сэкономит вам память. Но помните, что если элементы в вашем списке имеют ссылочный тип (а строки являются ссылочными типами), то все, что вы сохраняете, - это память, необходимая для хранения ссылок.
Так, например, если у вас есть List(of String)
, который выделен для 2000 элементов, а в нем всего 1000 элементов, вызов TrimExcess
сэкономит вам память, занятую 1000 ссылками. Это 4000 байтов в 32-разрядной среде выполнения и 8000 байтов в 64-разрядной среде выполнения.
Как упоминал Эндрю Хейр, вызов TrimExcess
после загрузки списка, который некоторое время будет зависать в памяти, вероятно, является хорошей вещью. Вы могли бы также подумать о том, чтобы позвонить TrimExcess
, если вы удалите целую кучу вещей из списка, и тогда вы собираетесь сохранить список вокруг. Но повторный вызов TrimExcess
для одного и того же списка, если только он действительно не становится большим, просто тратит время.