我们目前正在使用由MATLAB制作的.net DLL,我们正在将C#中的字节数据发送到此DLL中的Method。 每次调用时,我们都会创建6MB的字节数组。当函数返回时,有没有办法清除这个数组?
我们已经使用GC.Collect()
进行了测试,但没有运气。
先谢谢。
答案 0 :(得分:3)
您可以使用Array.Clear清除阵列。例如
Array.Clear(YourByteArray,0,YourByteArray.Length);
答案 1 :(得分:1)
清除数组可以使用Array.Clear
完成,但只要存在对数组的引用,就不会释放内存;由于数组具有恒定的大小,因此它的内容并不真正相关。
您需要做的是确保没有任何参考。只有在那之后,垃圾收集器才会处理它并释放内存(尽管无法保证何时会发生这种情况)。
当相关的数组变量不在范围内时,这可能会自动发生,并且没有其他内容引用它。如果你需要"删除"手动,您可以通过将变量设置为null
来实现此目的。这可能是(?)使GC能够发现在这里收集的东西的最快方式......
答案 2 :(得分:0)
首先使用Array.Clear清除数组,然后使用yourArray = null取消引用数组,并重新声明它