Garbage collection with pointers to individuals cells

In the heap model in which garbage collectors usually operate, the heap is an array of cells. Each cell contains either a non-pointer, to be ignored, or a pointer to a block of cells somewhere in the heap, called an object. The objects do not overlap. In addition, there are a bunch of cells not in the heap, called the root set. It is possible to determine from a cell whether it contains a pointer or not, and it is possible to determine from a pointer how long the object pointed to is.