いくつかの 3 次元配列が大量のメモリを割り当て、プログラムがそれらを大きい/小さい配列に置き換える必要があり、OutOfMemoryException をスローするという問題があります。
例: 5 つの 96MB 配列 (200x200x200、各エントリに 12 バイトのデータ) が割り当てられており、プログラムはそれらを 210x210x210 (111MB) に置き換える必要があります。これは次のような方法で行います。
array1 = new Vector3[210,210,210];
array1-array5 は、以前に使用したフィールドと同じです。これは古い配列をガベージ コレクションの候補として設定する必要がありますが、GC は十分に迅速に動作せず、新しい配列を割り当てる前に古い配列を割り当てたままにします - これが OOM を引き起こします - 一方、新しい割り当ての前にそれらが解放された場合、スペースは足りる。
私が探しているのは、次のようなことを行う方法です。
GC.Collect(array1) // this would set the reference to null and free the memory
array1 = new Vector3[210,210,210];
そのコードは(状況によっては)かなり頻繁に実行する必要がある可能性があるため、完全なガベージコレクションが良いアイデアかどうかはわかりません。
これを行う適切な方法はありますか?