diff options
author | ringabout <43030857+ringabout@users.noreply.github.com> | 2022-09-27 01:32:08 +0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-09-26 19:32:08 +0200 |
commit | b213913dcb767a86a5669c1c24ad5c7b1d5a8de8 (patch) | |
tree | 6072693f32c258903d83c97c8776b0e149d1d8bb /doc | |
parent | 40dae8c73196fb4e8e151e65f678f38882605d48 (diff) | |
download | Nim-b213913dcb767a86a5669c1c24ad5c7b1d5a8de8.tar.gz |
add a changelog and update the document for ORC (#20415)
* add a changelog and update the document for ORC * hone * back * Apply suggestions from code review Co-authored-by: Clay Sweetser <Varriount@users.noreply.github.com> * Update doc/mm.md Co-authored-by: Clay Sweetser <Varriount@users.noreply.github.com> * Update doc/mm.md Co-authored-by: Clay Sweetser <Varriount@users.noreply.github.com> Co-authored-by: Andreas Rumpf <rumpf_a@web.de>
Diffstat (limited to 'doc')
-rw-r--r-- | doc/advopt.txt | 3 | ||||
-rw-r--r-- | doc/mm.md | 17 |
2 files changed, 9 insertions, 11 deletions
diff --git a/doc/advopt.txt b/doc/advopt.txt index 244fe035b..3f439fdab 100644 --- a/doc/advopt.txt +++ b/doc/advopt.txt @@ -127,8 +127,7 @@ Advanced options: --skipParentCfg:on|off do not read the parent dirs' configuration files --skipProjCfg:on|off do not read the project's configuration file --mm:orc|arc|refc|markAndSweep|boehm|go|none|regions - select which memory management to use; default is 'refc' - recommended is 'orc' + select which memory management to use; default is 'orc' --exceptions:setjmp|cpp|goto|quirky select the exception handling implementation --index:on|off turn index file generation on|off diff --git a/doc/mm.md b/doc/mm.md index 2ba854add..9d1fc1955 100644 --- a/doc/mm.md +++ b/doc/mm.md @@ -28,10 +28,10 @@ To choose the memory management strategy use the `--mm:` switch. ARC/ORC ------- -`--mm:orc` is a memory management mode primarily based on reference counting. Cycles -in the object graph are handled by a "cycle collector" which is based on "trial deletion". -Since algorithms based on "tracing" are not used, the runtime behavior is oblivious to -the involved heap sizes. +ORC is the default memory management strategy. It is a memory +management mode primarily based on reference counting. Reference cycles are +handled by a cycle collection mechanism based on "trial deletion". +Since algorithms based on "tracing" are not used, the runtime behavior is oblivious to the involved heap and stack sizes. The reference counting operations (= "RC ops") do not use atomic instructions and do not have to -- instead entire subgraphs are *moved* between threads. The Nim compiler also aggressively @@ -57,12 +57,11 @@ and leaks memory with `--mm:arc`, in other words, for `async` you need to use `- Other MM modes -------------- -.. note:: The default `refc` GC is incremental, thread-local and not "stop-the-world". +.. note:: The `refc` GC is incremental, thread-local and not "stop-the-world". ---mm:refc This is the default memory management strategy. It's a - deferred reference counting based garbage collector - with a simple Mark&Sweep backup GC in order to collect cycles. Heaps are thread-local. - [This document](refc.html) contains further information. +--mm:refc It's a deferred reference counting based garbage collector + with a simple Mark&Sweep backup GC in order to collect cycles. + Heaps are thread-local. [This document](refc.html) contains further information. --mm:markAndSweep Simple Mark-And-Sweep based garbage collector. Heaps are thread-local. --mm:boehm Boehm based garbage collector, it offers a shared heap. |