Относится к этой документации Unity и перейдите в раздел
Большая куча с медленной, но редкой сборкой мусора
var tmp = new System.Object[1024];
// make allocations in smaller blocks to avoid them to be treated in a special way, which is designed for large blocks
for (int i = 0; i < 1024; i++)
tmp[i] = new byte[1024];
// release reference
tmp = null;
Фокус в том, чтобы предварительно выделить некоторые фрагменты памяти при запуске программы.
Почему этот трюк работает?
Являются ли куски некогда "зарегистрированными" (или "привязанными" ) к приложению, когда они предварительно выделены, так что даже если tmp
освобождается, когда Start()
завершено, ОС все еще остается обрабатывать эти куски как "зарегистрированные" в приложении?
Поскольку куски "зарегистрированы" в приложении, размер кучи приложения расширяется до определенного размера, и в следующий раз, когда он приобретает кусок памяти, ОС просто выберет его из кучи этого приложения.
Является ли мое объяснение правильным? Независимо от того, да или нет, кто-то может объяснить более подробно, спасибо.