aboutsummaryrefslogtreecommitdiffstats
path: root/doc
diff options
context:
space:
mode:
authorPaul Eggert2019-09-14 10:53:24 -0700
committerPaul Eggert2019-09-14 10:56:12 -0700
commit1acc0cc9aaf25c808a60cf09cf8a4d1c653c3aa9 (patch)
treea1b386031ae203e49564cccc6071e564fe5f0348 /doc
parent3f43adac495364aa76703acb86b07b47fe64b422 (diff)
downloademacs-1acc0cc9aaf25c808a60cf09cf8a4d1c653c3aa9.tar.gz
emacs-1acc0cc9aaf25c808a60cf09cf8a4d1c653c3aa9.zip
Improve doc of GC thresholds
* doc/lispref/internals.texi (Garbage Collection), etc/NEWS: Warn that control over GC is only approximate.
Diffstat (limited to 'doc')
-rw-r--r--doc/lispref/internals.texi13
1 files changed, 10 insertions, 3 deletions
diff --git a/doc/lispref/internals.texi b/doc/lispref/internals.texi
index f85c266edef..c52999e1cd2 100644
--- a/doc/lispref/internals.texi
+++ b/doc/lispref/internals.texi
@@ -533,9 +533,6 @@ be allocated for Lisp objects after one garbage collection in order to
533trigger another garbage collection. You can use the result returned by 533trigger another garbage collection. You can use the result returned by
534@code{garbage-collect} to get an information about size of the particular 534@code{garbage-collect} to get an information about size of the particular
535object type; space allocated to the contents of buffers does not count. 535object type; space allocated to the contents of buffers does not count.
536Note that the subsequent garbage collection does not happen immediately
537when the threshold is exhausted, but only the next time the Lisp interpreter
538is called.
539 536
540The initial threshold value is @code{GC_DEFAULT_THRESHOLD}, defined in 537The initial threshold value is @code{GC_DEFAULT_THRESHOLD}, defined in
541@file{alloc.c}. Since it's defined in @code{word_size} units, the value 538@file{alloc.c}. Since it's defined in @code{word_size} units, the value
@@ -562,6 +559,16 @@ increases. Thus, it can be desirable to do them less frequently in
562proportion. 559proportion.
563@end defopt 560@end defopt
564 561
562 Control over the garbage collector via @code{gc-cons-threshold} and
563@code{gc-cons-percentage} is only approximate. Although Emacs checks
564for threshold exhaustion regularly, for efficiency reasons it does not
565do so immediately after every change to the heap or to
566@code{gc-cons-threshold} or @code{gc-cons-percentage}, so exhausting
567the threshold does not immediately trigger garbage collection. Also,
568for efficency in threshold calculations Emacs approximates the heap
569size, which counts the bytes used by currently-accessible objects in
570the heap.
571
565 The value returned by @code{garbage-collect} describes the amount of 572 The value returned by @code{garbage-collect} describes the amount of
566memory used by Lisp data, broken down by data type. By contrast, the 573memory used by Lisp data, broken down by data type. By contrast, the
567function @code{memory-limit} provides information on the total amount of 574function @code{memory-limit} provides information on the total amount of