单声道中的数组分配的内存不释放(C#)

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了单声道中的数组分配的内存不释放(C#)相关的知识,希望对你有一定的参考价值。

在我的C#程序中我有功能,在其中,我创建长度为1000000的字节数组,当执行该功能时,内存显示内存使用量增加1MB。问题出在这里,从函数返回后,在函数中分配的1MB内存不释放,为什么????

答案

垃圾收集器不会立即释放内存但是

当满足下列条件之一时,将发生垃圾收集:

系统物理内存较低。这可以通过OS的低内存通知或主机指示的低内存来检测。

托管堆上已分配对象使用的内存超过可接受的阈值。在该过程运行时不断调整该阈值。

调用GC.Collect方法。几乎在所有情况下,您都不必调用此方法,因为垃圾收集器会持续运行。此方法主要用于独特的情况和测试。

你可以找到更多here

以上是关于单声道中的数组分配的内存不释放(C#)的主要内容,如果未能解决你的问题,请参考以下文章

C语言中的动态内存分配的用法举例

在函数中定义数组:float fltNum[10],该数组在内存中是如何被分配内存空间?何时被释放内存空间?c语言中

在C中的堆上分配数组

58 动态内存分配

动态内存分配

内存空间