0
A
回答
1
至于评论这个问题的回应,看来你需要澄清几个概念:
在.NET中,对象地方住记忆。 A 参考有点像指向这种对象/内存位置的指针。 A 值是一些不可或缺的数值(123的数字)。
例如,假设您有一个类型为的对象MyClass,并且您已创建一个新实例。该对象包含一个字符串。该字符串是另一个对象,并且您的实例MyClass保存对字符串对象的引用。
垃圾收集器只在对象上运行。它跟踪引用到一个对象,如果没有人再引用该对象,垃圾收集器就可以释放该对象。在我们的例子中,如果垃圾收集器注意到没有人持有对MyClass实例的引用,那么它确保该对象被释放。这反过来又使字符串的引用消失,然后垃圾收集器也可以释放字符串(当然,如果没有其他人持有引用)。值不需要以任何特殊的方式处理,因为它们是属于对象的内存的一部分(因此不能“独立”释放)。
对于Java,BTW也是如此。
0
当不存在对引用的引用时,引用类型(类)的对象变为垃圾。它会在一段时间后收集,每当GC运行时。这些对象可能是垃圾的原因是因为它们可以从程序中的多个位置引用,所以程序的各个部分都不能释放对象,因为其他部分可能仍然需要它。 GC的职责是发现何时该程序的任何部分不再需要该对象。
一个值类型的对象(一个结构,或像一个整数的内置类型)仅仅被复制到每个需要使用它的地方,所以不存在从多个部分使用一个值的问题程序。值类型不需要GC,因为它们始终是确保它们被释放的其他东西的一部分。当方法返回时,存储在堆栈上的值(例如方法内的局部变量)被释放。存储在类对象中的值在该类对象变为垃圾时被释放。
相关问题
- 1. 关于垃圾收集行为查询
- 2. Sloooow垃圾收集查询
- 3. Java垃圾收集器逻辑查询
- 4. 垃圾收集器
- 5. 关于垃圾收集的Java拼图
- 6. 想清楚关于垃圾收集(AS3.0)
- 7. 关于Future.firstCompletedOf和垃圾收集机制
- 8. 空和delete()在关于垃圾收集
- 9. Node.js的垃圾收集器
- 10. 垃圾收集
- 11. 关于Angular2“垃圾回收”
- 12. 垃圾收集器,用于托管C++
- 13. Renderscript和垃圾收集器
- 14. 垃圾收集器闪存
- 15. 垃圾收集器asp.net
- 16. 垃圾收集器vs池
- 17. .NET垃圾收集器
- 18. 垃圾收集器Flash Player
- 19. Jruby,垃圾收集器,Redis
- 20. SpiderMonkey垃圾收集器
- 21. 垃圾收集器C#,关于'清除'对象的问题
- 22. 关于实现垃圾收集器的一些观点
- 23. 垃圾收集java
- 24. DoctrineCommonCache垃圾收集?
- 25. Java垃圾收集
- 26. C#垃圾收集
- 27. Java垃圾收集
- 28. WeakEvent垃圾收集
- 29. GWT垃圾收集
- 30. 关闭垃圾收集的混乱
目前尚不清楚你的问题是什么。你问* GC如何释放内存?或者它负责释放哪些类型的东西? – Wyzard 2011-05-02 07:09:56
我想知道一件事情GC释放内存中的对象或refrence或价值... – 2011-05-02 07:20:41
恐怕句子没有多大意义。你能否试着改写它,并用另一种/更详细的方式来描述它? – DarkDust 2011-05-02 07:24:22