2011-01-27 200 views

回答

1

JVM维护所有引用对象的映射。每个GC循环(在java,train,mark和sweep等中有许多GC方法)遍历整个对象引用列表(注意对象引用存在于堆栈中,数据存在于堆中)以及所有对象引用不再被引用标记为准备垃圾收集/垃圾收集。

这是理解GC的一种简化方式,大多数开发人员不需要知道GC进程的内部;但有一些理解是很好的。

这里有一些链接,你可能会感兴趣:

http://chaoticjava.com/posts/how-does-garbage-collection-work/

http://java.sun.com/docs/hotspot/gc1.4.2/

http://www.oracle.com/technetwork/java/gc-tuning-5-138395.html

http://www.oracle.com/technetwork/java/javase/tech/ts-3153-coomes-19899-dsf-150093.pdf#search=%22garbage%20collection%22

希望这有助于...

+0

的记忆收藏* “JVM维护地图的所有引用的对象。” * - 不完全是。在某些情况下,GC有效*构建*从“旧空间”复制到“新空间”的对象的临时地图。在其他情况下,对象标题中只有一点点,表示它被引用......并且根本没有映射。 – 2011-01-27 08:05:42