使用C#后清除数组

Mat*_*ont 0 c# arrays clear

我用这种方式在C#中声明了一个数组:

  public ushort[][] pixels16;
Run Code Online (Sandbox Code Playgroud)

然后我用500个图像的像素数据填充它,数组中的每个元素包含262144个项目.问题是,在我使用它之后变得太大所以我需要摆脱它以释放内存..我怎么能这样做?

abe*_*nky 7

你写了:

我用这种方式在C#中声明了一个数组:
public ushort[][] pixels16;

要明确:你没有声明一个数组.你已经声明了一个名为的引用pixels16.

该引用可以是任何2-D数组ushorts,但它最初不引用任何内容(null).

您实际创建数组时:

pixels16 = new ushort[500, 500];
Run Code Online (Sandbox Code Playgroud)

同样,当您不再引用该数组时,可以使该数组符合垃圾回收的条件:

pixels16 = null;  // Now the array is ready for Garbage Collection.
Run Code Online (Sandbox Code Playgroud)

垃圾收集器非常擅长它的工作,不建议你手动调用垃圾收集.它很可能会非常快速有效地收集垃圾,并保持程序运行没有问题.

  • 这不是初始化新锯齿状数组的正确语法. (2认同)

Akr*_*rem 5

你可以做 :

pixels16 = null;
GC.Collect() // to free memory
Run Code Online (Sandbox Code Playgroud)

  • 手动调用垃圾收集器不是一个好习惯!!看看[在 C# 中强制垃圾收集的最佳实践](http://stackoverflow.com/questions/233596/best-practice-for-forcing-garbage-collection-in-c-sharp) (4认同)