This abstract class implements the global core functionality for all
memory management schemes. All global MMTk plans should inherit from
this class.
All plans make a clear distinction between global and
thread-local activities, and divides global and local state
into separate class hierarchies. Global activities must be
synchronized, whereas no synchronization is required for
thread-local activities. There is a single instance of Plan (or the
appropriate sub-class), and a 1:1 mapping of PlanLocal to "kernel
threads" (aka CPUs or in Jikes RVM, Processors). Thus instance
methods of PlanLocal allow fast, unsynchronized access to functions such as
allocation and collection.
The global instance defines and manages static resources
(such as memory and virtual memory resources). This mapping of threads to
instances is crucial to understanding the correctness and
performance properties of MMTk plans.
All plans make a clear distinction between global and thread-local activities, and divides global and local state into separate class hierarchies. Global activities must be synchronized, whereas no synchronization is required for thread-local activities. There is a single instance of Plan (or the appropriate sub-class), and a 1:1 mapping of PlanLocal to "kernel threads" (aka CPUs or in Jikes RVM, Processors). Thus instance methods of PlanLocal allow fast, unsynchronized access to functions such as allocation and collection. The global instance defines and manages static resources (such as memory and virtual memory resources). This mapping of threads to instances is crucial to understanding the correctness and performance properties of MMTk plans.