0.9.8.19:
Changes to GENCGC memory zeroing behaviour that give a big
performance boost, especially on modern processors.
* Instead of zeroing memory by remapping memory with
munmap/mmap at GC time, pages are just marked as needing
zeroing and zeroed with memset when they're added to a new
allocation region. This reduces GC latency both for the
common and worst cases.
* To keep the memory footprint down, clear the pages by
remapping after major GCs (arbitrarily defined as a
collection of generation 2 or older). The memory freed from
a minor GC is just going to get used again immediately , so
releasing them back to the OS would make little sense.
* Add a GENCGC mode (#define READ_PROTECT_FREE_PAGES) for
catching attempts to read unallocated pages
* See sbcl-devel "Changes to GENCGC memory zeroing" in 2005-12
for more details and performance measurements. (Note
that many parts of this patch have already been committed
piecemeal over the last month, this is just the most
significant chunk).
* Performance effect on BSDs (which used a different zeroing
strategy than Linux before this) is unknown.