When I research the plan of SemiSpace, I was puzzsled about the reference upodate problem.  It is happened when an object has been copied from the fromspace to tospace, then for other objects  who had a reference to this object, when and how to update their reference to the object moved?  For example, if A has a reference to B, C also has a reference to B, When B has been copied from the fromspace to the tospace, how do A and C update the reference to B's copy in tospace. 
Could anyone explain it to me and give me some advice to find the process of refernce update through  the source code?