replace scanning with linked list to find space

In order to do that:

For both collectors, free-list-head is used to hold
head of free space list

Specially for hybrid collector:
update the layout of heap to,
young heap | inter-gen table | old heap -> <- tracing stack
where if old heap objects and tracing stack meet collection
will crash.