Atom garbage collection scans all Prolog's dynamic data areas when
looking for atoms that are in use. Scanning finds atoms in the Prolog stacks
and in all compiled and interpreted code that has been dynamically
loaded into Prolog via consult/1
, use_module/1
, assert/2
,
etc. However, there are certain potential sources of atoms in the
Prolog image from which atoms cannot be reclaimed. Atoms for Prolog
code that has been statically linked with either the Prolog Development
Environment or the Runtime Environment have been placed in the
text space, making them (and the code that contains them) effectively
permanent. Although such code can be abolished, its space can never
be reclaimed.
These atoms are internally flagged as permanent by the system and are always retained by atom garbage collection. An atom that has become permanent cannot be made non-permanent, so can never be reclaimed.