Tag: out of memory

强制数组的垃圾收集,C#

我有一个问题,其中一对三维数组分配了大量的内存,程序有时需要用更大/更小的内容替换它们并抛出OutOfMemoryException。 示例:有5个分配的96MBarrays(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]; 我不确定完整的垃圾收集是否是一个好主意,因为该代码可能(在某些情况下)需要经常执行。 有没有正确的方法呢?