在C#中重新分配数组时,内存会发生什么变化?
在下面的代码中,myArray最初指向的内存在第2行重新分配后会发生什么情况?是内存丢失了,还是由C#垃圾收集器处理在C#中重新分配数组时,内存会发生什么变化?,c#,arrays,memory,C#,Arrays,Memory,在下面的代码中,myArray最初指向的内存在第2行重新分配后会发生什么情况?是内存丢失了,还是由C#垃圾收集器处理 static void Main(string[] args) { double[] myArray = new Double[10]; myArray = new Double[3]; } 据我所知,没有办法显式释放内存,所以我希望C#自动释放。当然,C#自动释放分配前与myArray关联的内存。这种情况不会立即发生,但一旦垃圾收集器意识到该Double[10]a
static void Main(string[] args)
{
double[] myArray = new Double[10];
myArray = new Double[3];
}
据我所知,没有办法显式释放内存,所以我希望C#自动释放。当然,C#自动释放分配前与myArray
关联的内存。这种情况不会立即发生,但一旦垃圾收集器意识到该Double[10]
array object*没有剩余的引用,分配给该对象的内存就会被回收
如果稍微更改程序以创建对同一数组的第二个引用,如下所示
double[] myArray = new Double[10];
double[] myArray2 = myArray; // Second reference
myArray = new Double[3];
垃圾收集器不会释放该对象,只要程序仍然可以访问该对象的引用
*有时,您的程序在垃圾收集器完成其分析之前完成执行。不过,内存仍然会被释放。当然,C#会自动释放分配之前与myArray
关联的内存。这种情况不会立即发生,但一旦垃圾收集器意识到该Double[10]
array object*没有剩余的引用,分配给该对象的内存就会被回收
如果稍微更改程序以创建对同一数组的第二个引用,如下所示
double[] myArray = new Double[10];
double[] myArray2 = myArray; // Second reference
myArray = new Double[3];
垃圾收集器不会释放该对象,只要程序仍然可以访问该对象的引用
*有时,您的程序在垃圾收集器完成其分析之前完成执行。但是,内存仍然会被释放。当变量超出范围并且不再需要内存时,它就有资格进行垃圾收集 MS解释了所有内容,如下所示: C#采用自动内存管理,使开发人员不必手动分配和释放对象占用的内存 自动内存管理策略由一个垃圾处理器实现 收藏家。对象的内存管理生命周期如下 如下:
或者,我相信您也可以找到一些关于该主题的博客。当您的变量超出范围并且不再需要内存时,它就可以进行垃圾收集 MS解释了所有内容,如下所示: C#采用自动内存管理,使开发人员不必手动分配和释放对象占用的内存 自动内存管理策略由一个垃圾处理器实现 收藏家。对象的内存管理生命周期如下 如下:
或者我相信你也可以找到一些关于这个主题的博客。垃圾收集器会处理它。数据仍会在内存中保留一段时间。因为你不再有任何指向该数据的指针,