blob: beceb1a013b754724e4115ad9dfc67f97eeaa7ff (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
|
;;; gcmh-config.el --- Garbage collection strategy via gcmh -*- lexical-binding: t -*-
;;; Commentary:
;; gcmh (the Garbage Collector Magic Hack) owns `gc-cons-threshold' for the
;; session. It keeps the threshold very high while you are active so GC never
;; pauses mid-edit, then drops it and collects on idle, when a pause is
;; invisible. This replaces the old hand-rolled scheme -- a stock-800KB restore
;; in early-init.el plus a minibuffer setup/exit bump -- which pinned GC at
;; 800000 (Emacs's bare-editor default), far too low for a config this size and
;; the cause of frequent GC pauses during completion, agenda builds, and LSP/AI
;; activity.
;;
;; Kept in its own module, not system-defaults.el: that module is pre-loaded by
;; the comp-errors test harness, which has no package system, so an `:ensure'
;; package there errors at load time. early-init.el bumps the threshold to
;; `most-positive-fixnum' for startup and deliberately does not restore it;
;; `gcmh-mode' takes ownership from here on.
;;; Code:
(use-package gcmh
:ensure t
:demand t
:config
(setq gcmh-idle-delay 'auto ; scale the idle GC delay to GC cost
gcmh-high-cons-threshold (* 1 1024 1024 1024)) ; 1 GB during activity
(gcmh-mode 1))
(provide 'gcmh-config)
;;; gcmh-config.el ends here
|