2011-02-10 13 views

回答

5

假设没有其他指向那些100分的东西,那么是的,他们有资格进行垃圾回收。

+1

啊,我明白了。呸!我知道有什么可疑的...有*总是*有点可疑D: – Voldemort 2011-02-10 05:11:04

+0

@欧米迦:很腥。如果您坚持对该对象的引用,则不需要*将其完全丢弃。如果你经常遇到这样的问题,那么你的代码/设计就会出现严重错误。 – 2011-02-10 05:17:03

1

是的,你在内存中宣布一个新的地方为变量,旧的基准丢失,并在一段时间内的垃圾收集清理。

2

除非在列表中的对象refered到/被其它的东西引用,他们将被拿出来Garbage Collection

.NET框架的垃圾回收器 管理您的应用程序分配和 内存释放。每次您创建一个新对象 时,常见的 语言运行时将为托管堆中的对象分配内存。作为 只要地址的可用空间 托管堆,运行时 继续为新 对象分配空间。但是,内存不是无限的 。垃圾 收集器必须执行收集 为了释放一些内存。垃圾收集器 的优化引擎 判定执行 收集,基于正在取得 拨款的最佳时机。 垃圾 收集器执行收集时,它 将检查管理堆 中不再由 应用程序使用的对象,并执行必要的 操作来收回其内存。

1

正如其他人所指出的,垃圾收集应该踢的。但是,因为当发生无法控制,很可能该数据还在内存中。最坚定的人可能会找到它。

如果你是绝对关注存储器的监听,只是用一个循环,每一个元素的值设置为像0,或随机值。

0

不一定。 CLR(执行C#和VB.net代码的运行时)是垃圾收集系统。定期地,运行时将检查内存中的对象,确定哪些不能从“根集”(包括堆栈上的本地变量)到达,并释放它们。

在你的榜样,如果没有其他变量或字段抱着你的列表的引用(即也是从根集可达),那么原来的名单将被释放。此外,如果名单被释放,并如果没有剩余的情况下,每个列表的元素,那么这些元素也将被释放。但是,对列表的单个元素的引用不会阻止列表本身或列表的任何其他元素被释放。

相关问题