Core idea of this stuff is to run compact_buffer when idle, e.g. with: (defun idle-compact-buffers (timeout) (run-with-idle-timer timeout t '(lambda nil (mapcar '(lambda (buffer) (if (not (eq buffer (current-buffer))) (compact-buffer buffer))) (buffer-list))))) This offloads Fgarbage_collect, especially if there are a few hundreds of buffers. Dmitry