Liberty Eiffel provides two garbage collector implementations.
Most core libraries are also well equipped to minimize memory requirements in the case that no GC is used.
The native GC is generated at the same time as the rest of the code, allowing efficient use of the memory by splitting it in chunks of known size.
See this paper for details.
The Boehm-Demers-Weiser conservative collector is also supported. The minimal required version is currently 7.2.
The missing parts are:
- a lot of testing (esp. dynamic arrays, weak references, agents)
- total GC cycle at the end of the program (Eiffel requires that all the objects are disposed at exit, and some programs or libraries rely on that behaviour)
- Liberty does not make use of the parallel or incremental collectors