Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/csharp-4.0/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 4.0 关于垃圾收集器的查询_C# 4.0 - Fatal编程技术网

C# 4.0 关于垃圾收集器的查询

C# 4.0 关于垃圾收集器的查询,c#-4.0,C# 4.0,我知道GC会释放obj的内存,但我知道有一件事GC会释放类似对象、引用或值的内存。。。。 请帮帮我 提前感谢……作为对问题评论的回应,您似乎需要澄清一些概念: 在.NET中,对象位于内存中的某个位置。引用有点像指向这样一个对象/内存位置的指针。值是某个整数值(类似123的数字) 例如,假设您有一个MyClass类型的对象,并且您已经创建了一个新实例。此对象包含一个字符串。该字符串是另一个对象,MyClass的实例包含对该字符串对象的引用 垃圾收集器仅对对象进行操作。它跟踪对对象的引用,如果没有人

我知道GC会释放obj的内存,但我知道有一件事GC会释放类似对象、引用或值的内存。。。。 请帮帮我


提前感谢……

作为对问题评论的回应,您似乎需要澄清一些概念:

在.NET中,对象位于内存中的某个位置。引用有点像指向这样一个对象/内存位置的指针。值是某个整数值(类似123的数字)

例如,假设您有一个MyClass类型的对象,并且您已经创建了一个新实例。此对象包含一个字符串。该字符串是另一个对象,MyClass的实例包含对该字符串对象的引用

垃圾收集器仅对对象进行操作。它跟踪对对象的引用,如果没有人再引用该对象,垃圾收集器可以释放该对象。在我们的示例中,如果垃圾收集器注意到没有人持有对MyClass实例的引用,那么它会确保对象被释放。这反过来会使对字符串的引用消失,垃圾收集器也可以释放该字符串(当然,如果没有其他人持有引用)。值不需要以任何特殊方式处理,因为它们是属于对象的内存的一部分(因此不能“独立地”释放)


Java也是如此,顺便说一句。

引用类型(类)的对象在不再存在对它的引用时成为垃圾。在这之后的一段时间内,每当GC下次运行时,都会收集它。这些对象可能是垃圾的原因是,它们可以从程序中的多个位置引用,因此程序的任何单个部分都不能释放该对象,因为其他部分可能仍然需要它。GC的职责是发现程序的任何部分何时不再需要对象


值类型的对象(结构或内置类型,如整数)只需复制到需要使用它的每个位置,因此从程序的多个部分使用一个值是没有问题的。值类型不需要GC,因为它们始终是确保释放它们的其他内容的一部分。当方法返回时,将释放存储在堆栈上的值(例如,方法中的局部变量)。存储在类对象中的值在该类对象变成垃圾时被释放。

不清楚您的问题是什么。你是在问GC是如何释放内存的吗?或者说它负责释放哪种类型的东西?我想知道GC释放记忆的一件事是用哪个词来表示对象、引用或值……恐怕这个句子没有多大意义。你能试着重新措辞并用另一种/更详细的方式描述它吗?GC以哪种形式释放内存…1.object 2。参考文献3。valueGC释放作为对象、引用或值的内存。。。。。。