From 73a384a98698ae1ef655c41a2b76a31b3f2c80fc Mon Sep 17 00:00:00 2001 From: Lars Ingebrigtsen Date: Tue, 21 Jun 2022 15:04:27 +0200 Subject: [PATCH] Increase gc-cons-percentage in -batch Emacs * doc/lispref/os.texi (Batch Mode): Document it. * src/emacs.c (main): Use a gc-cons-percentage of 1.0 in noninteractive Emacsen. --- doc/lispref/os.texi | 6 ++++++ etc/NEWS | 8 ++++++++ src/emacs.c | 6 ++++++ 3 files changed, 20 insertions(+) diff --git a/doc/lispref/os.texi b/doc/lispref/os.texi index bc5374f10f2..262ef8bbfde 100644 --- a/doc/lispref/os.texi +++ b/doc/lispref/os.texi @@ -2738,6 +2738,12 @@ if it is non-@code{nil}; this can be overridden by binding @code{coding-system-for-write} to a coding system of you choice (@pxref{Explicit Encoding}). +In batch mode, Emacs will adjust the @code{gc-cons-threshold} variable +up from a default of @samp{0.1} to @samp{1.0}. Batch jobs that are +supposed to run for a long time should adjust the limit back down +again, because this means that less garbage collection will be +performed by default (and more memory consumed). + @defvar noninteractive This variable is non-@code{nil} when Emacs is running in batch mode. @end defvar diff --git a/etc/NEWS b/etc/NEWS index fdc2e99ca46..cb59d166f78 100644 --- a/etc/NEWS +++ b/etc/NEWS @@ -116,6 +116,14 @@ Emacs Sessions" node in the Emacs manual for more details. * Startup Changes in Emacs 29.1 ++++ +** -batch and -script now adjusts the garbage collection levels. +These switches now set 'gc-cons-percentage' to 1.0 (up from the +default of 0.1). This means that batch processes will typically use +more memory than before, but use less time doing garbage collection. +Batch jobs that are supposed to run for a long time should adjust the +limit back down again. + +++ ** Emacs can now be used more easily in an executable script. If you start an executable script with diff --git a/src/emacs.c b/src/emacs.c index 5098acd7225..c602157da16 100644 --- a/src/emacs.c +++ b/src/emacs.c @@ -1944,6 +1944,12 @@ Using an Emacs configured with --with-x-toolkit=lucid does not have this problem if (!initialized) syms_of_comp (); + /* Do less garbage collection in batch mode (since these tend to be + more short-lived, and the memory is returned to the OS on exit + anyway). */ + if (noninteractive) + Vgc_cons_percentage = make_float (1.0); + no_loadup = argmatch (argv, argc, "-nl", "--no-loadup", 6, NULL, &skip_args); -- 2.39.2