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.
This commit is contained in:
Lars Ingebrigtsen 2022-06-21 15:04:27 +02:00
parent 0939465300
commit 73a384a986
3 changed files with 20 additions and 0 deletions

View file

@ -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

View file

@ -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

View file

@ -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);