Chander Shivdasani
Chander Shivdasani

Reputation: 10121

How does garbage collector identify roots

The first phase of a mark-sweep garbage collector is to mark(find) all the live objects on the heap. To do this, there must be a starting point or root, from where all the marking begins. How does GC identify such roots?

Upvotes: 5

Views: 1067

Answers (2)

Skip Head
Skip Head

Reputation: 7760

"A distinguished set of objects are assumed to be reachable: these are known as the roots. Typically, these include all the objects referenced from anywhere in the call stack (that is, all local variables and parameters in the functions currently being invoked), and any global variables.

Wikipedia

Upvotes: 3

kosa
kosa

Reputation: 66637

Using the technique called root set enumeratios all roots will be identified. Here is sentence from Mark-sweep patent document.

In the first phase, all direct references to objects from currently running programs may be identified. These references are called roots, or together a root set, and a process of identifying all such references may be called root set enumeration

Here is link for patent document. Mark sweep patent link

Eventhough it was by .NET guy, I feel Basics of mark sweep link will give you good understanding on how it works.

Upvotes: 2

Related Questions