Simple explicit regions are straightforward to implement; the following description is based on the work of Hanson.
Unlike in typical garbage collection systems, there is no need to tag data with its type.
[1] Explicit regions were instrumental in the design of some early C-based software projects, including the Apache HTTP Server, which calls them pools, and the PostgreSQL database management system, which calls them memory contexts.
In an early work by Ruggieri and Murtagh,[5] a region is created at the beginning of each function and deallocated at the end.
[10] The ML Kit was eventually scaled to large applications with two additions: a scheme for separate compilation of modules, and a hybrid technique combining region inference with tracing garbage collection.
Eliminating leaks may involve restructuring the program, typically by introducing new, shorter-lifetime regions.
Tracing garbage collectors are more effective at deallocating this type of data in a timely manner without program changes; this was one justification for hybrid region/GC systems.
[11] On the other hand, tracing garbage collectors can also exhibit subtle leaks, if references are retained to data which will never be used again.