Search code examples
javagarbage-collectionjvmgc-roots

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?


Solution

  • 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.