Function: memory-report
memory-report is an autoloaded, interactive and byte-compiled function
defined in memory-report.el.gz.
Signature
(memory-report)
Documentation
Generate a report of how Emacs is using memory.
This report is approximate, and will commonly over-count memory usage by variables, because shared data structures will usually by counted more than once.
Probably introduced at or before Emacs version 28.1.
Key Bindings
Source Code
;; Defined in /usr/src/emacs/lisp/emacs-lisp/memory-report.el.gz
;;;###autoload
(defun memory-report ()
"Generate a report of how Emacs is using memory.
This report is approximate, and will commonly over-count memory
usage by variables, because shared data structures will usually
by counted more than once."
(interactive)
(pop-to-buffer "*Memory Report*")
(special-mode)
(button-mode 1)
(setq-local revert-buffer-function (lambda (_ignore-auto _noconfirm)
(memory-report)))
(setq truncate-lines t)
(message "Gathering data...")
(let ((reports (append (memory-report--garbage-collect)
(memory-report--image-cache)
(memory-report--symbol-plist)
(memory-report--buffers)
(memory-report--largest-variables)))
(inhibit-read-only t)
summaries details)
(message "Gathering data...done")
(erase-buffer)
(insert (propertize "Estimated Emacs Memory Usage\n\n" 'face 'bold))
(dolist (report reports)
(if (listp report)
(push report summaries)
(push report details)))
(dolist (summary (seq-sort (lambda (e1 e2)
(> (cdr e1) (cdr e2)))
summaries))
(insert (format "%s %s\n"
(memory-report--format (cdr summary))
(car summary))))
(insert "\n")
(dolist (detail (nreverse details))
(insert detail "\n")))
(goto-char (point-min)))