GNU ELPA - emacs-gc-stats


Collect Emacs GC statistics
emacs-gc-stats-1.4.2.tar (.sig), 2024-Mar-31, 30.0 KiB
Ihor Radchenko <>
Atom feed
Browse ELPA's repository
CGit or Gitweb

To install this package from Emacs, use package-install or list-packages.

Full description

This package collects Emacs garbage collection (GC) statistics over time and saves it in the format that can be shared with Emacs maintainers.


See the source code for information how to contact the author.

[2023-12-06 Wed] You can find EmacsConf2023 presentation with analysis of the collected data (as of the timestamp date) at The data in reproducible format is available at

1. Usage


(require 'emacs-gc-stats)
;; Optionally reset Emacs GC settings to default values (recommended)
(setq emacs-gc-stats-gc-defaults 'emacs-defaults)
;; Optionally set reminder to upload the stats after 3 weeks.
(setq emacs-gc-stats-remind t) ; can also be a number of days
;; Optionally disable logging the command names
;; (setq emacs-gc-stats-inhibit-command-name-logging t)
(emacs-gc-stats-mode +1)

to your init file to enable the statistics acquiring.

When you are ready to share the results, run M-x emacs-gc-stats-save-session and then share the saved emacs-gc-stats-file (defaults to ~/.emacs.d/emacs-gc-stats.eld) by sending an email attachment to You can review the file before sharing–it is a text file.

Configure emacs-gc-stats-remind to make Emacs display a reminder about sharing the results.

2. Security considerations

This package does not upload anything automatically. You will need to upload the data manually, by sending email attachment. If necessary, you can review emacs-gc-stats-file (defaults to ~/.emacs.d/emacs-gc-stats.eld) before uploading–it is just a text file.

The following data is being collected after every command:

  • GC settings gc-cons-threshold and gc-cons-percentage
  • Emacs version and whether Emacs framework (Doom, Prelude, etc) is used
  • Whether gcmh-mode is used
  • Idle time and Emacs uptime
  • Available OS memory (see memory-info)
  • Emacs memory allocation/GC stats
  • Current command name (potentially sensitive data, can be disabled)
  • Timestamp when every GC is finished

Logging the command names can be disabled by setting emacs-gc-stats-inhibit-command-name-logging customization.

What exactly is being logger is controlled by emacs-gc-stats-setting-vars, emacs-gc-stats-command-vars, and emacs-gc-stats-summary-vars.

You can use M-x emacs-gc-stats-clear to clear the currently collected session data.

You can pause the logging any time by disabling emacs-gc-stats-mode (M-x emacs-gc-stats-mode).

3. News

3.1. Version 1.4.1

  • Avoid memory-info trying to retrieve memory information from remote system over TRAMP.

3.2. Version 1.4

  • emacs-gc-stats-file is now compressed, when possible.

3.3. Version 1.3

  • New customization: emacs-gc-stats-inhibit-command-name-logging to disable logging current command name. Logging is enabled by default.
  • New customization: emacs-gc-stats-remind to set a reminder to share the data. Reminder is disabled by default.
  • The data being collected is can now be customized using emacs-gc-stats-setting-vars, emacs-gc-stats-command-vars, and emacs-gc-stats-summary-vars.

Old versions

emacs-gc-stats-1.4.1.tar.lz2023-Jul-215.27 KiB
emacs-gc-stats-1.4.tar.lz2023-Jul-075.15 KiB
emacs-gc-stats-1.3.tar.lz2023-Jun-204.89 KiB
emacs-gc-stats-1.2.3.tar.lz2023-Jun-183.55 KiB
emacs-gc-stats-1.2.1.tar.lz2023-Jun-163.22 KiB
emacs-gc-stats-1.2.tar.lz2023-Jun-153.00 KiB
emacs-gc-stats-1.1.tar.lz2023-Jun-112.74 KiB