HotSpot VM Serial GC的一个问题

看了一段时间的HotSpot GC代码,一直有一个问题,就是新生代上的对象收集:栈上引用的对象最终似乎都是通过FastScanClosure::do_oop(oop* p)方法移动并修改栈上指针指向移动后新位置的,但这个方法中仅仅移动了被p直接引用的对象,那么被p间接引用的对象呢,它们是如果被移动的,相应的指向它们的指针又是如何修改的。注意到putfiled方法在实现过程中调用了do_oop_store,其中会将CardTable置dirty。不知两者之间有关系吗?
共 26 条回复