When your language has to include a built-in swapper to manage the memory you know you are suffering from the second system effect.<p>> The Q-32 version was so cramped for space (approximately 48,000 48-bit words) that an application-level swapper was written: If a function was needed but not in memory 1) if memory space was available, the function was paged in by LISP from an ordinary data file, 2) if space was not available, the memory manager tried to create space by shuffling the in-memory area holding binary code to make space, if this did not work some in-memory code was excised or the GC invoked then 3) the dynamic loader read the binary code into memory.