I read http://www.cubrid.org/blog/tags/Garbage%20Collection/ article which gives high level picture of GC in Java. It says:
The compaction task is to remove memory fragmentation by compacting memory in order to remove the empty space between allocated memory areas.
Should objects be moved into anther places in order to fill holes?
I think that objects are moved. If so that mean addresses are changed and so reference to that object also should be updated?
It seems too complicated task to find all back reference and update them...