diff --git a/doc/go1.19.html b/doc/go1.19.html index 9a689d1980..a932a717ba 100644 --- a/doc/go1.19.html +++ b/doc/go1.19.html @@ -82,12 +82,37 @@ Do not send CLs removing the interior tags from such phrases.
- TODO: soft memory limit +
+ The runtime now includes support for a soft memory limit. This memory limit
+ includes all memory mapped and managed by the runtime, and excludes external
+ memory sources such as binary size, memory managed in other languages, and
+ memory held by the operating system on behalf of the Go program. This limit
+ may be managed via the GOMEMLIMIT environment variable or the
+ SetMemoryLimit function in the runtime/debug package. The limit
+ works in conjunction with GOGC and SetGCPercent,
+ and will be respected even if GOGC=off, allowing Go programs to
+ always make maximal use of their memory limit, improving resource efficiency
+ in some cases. Please note that small memory limits, on the order of tens of
+ megabytes or less, are less likely to be adhered to due to external latency
+ factors, such as OS scheduling. See https://go.dev/issue/52433 for more
+ details. Larger memory limits, on the order of hundreds of megabytes or more,
+ are stable and production-ready.
+
+ In order to limit the effects of GC thrashing when the program's live heap
+ size approaches the soft memory limit, the Go runtime also attempts to limit
+ total GC CPU utilization to 50%, excluding idle time, choosing to use more
+ memory over preventing application progress. In practice, we expect this limit
+ to only play a role in exceptional cases, and the new runtime/metrics metric
+ /gc/limiter/last-enabled:gc-cycle reports when this last
+ occurred.
- TODO: idle mark workers + The runtime now schedules many fewer GC worker goroutines on idle operating + system threads when the application is idle enough to force a periodic GC + cycle.
@@ -494,7 +519,7 @@ Do not send CLs removing the interior tags from such phrases.
When used together with the CPU profiler, the - execution trace includes CPU profile samples. + execution trace includes CPU profile samples as instantaneous events.