Skip to content

Clarify pause vs STW vs GC #1362

@qinsoon

Description

@qinsoon

The current code base assumes stop-the-world GC. Thus in most cases, the terms 'pause', 'stop-the-world' (STW) and 'GC' are used interchangably.

With #1355 that introduces a concurrent GC plan, those terms becomes clearly different.

  • 'pause' and 'stop-the-world' is the same, and their meanings is also the same as before -- all the mutators come to a stop for MMTK to do some work
  • 'GC' is the process of identifying and reclaiming objects. Its start and the end is mostly defined by each plan. It may be one single pause (STW GC), or may consist of multiple pauses and happen concurrently with mutators. Also 'GC' is also a general term, such as gc work, gc scheduler, etc.

Examples of confusing cases of pause/stw/gc include:

  • Plan::end_of_gc which really means the end of a pause
  • We need to differentiate the number of GCs and the number of pauses in our counters.
  • GlobalState::gc_status and GlobalState::gc_start_time.

We also want to avoid making too many breaking changes to the API. We can keep use GC in the context that they won't make things confusing. For example, GCTrigger, GCRequester

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions