mirror of
https://github.com/golang/go
synced 2024-11-20 00:04:43 -07:00
runtime: report next_gc for initial heap size in gctrace
Currently, the initial heap size reported in the gctrace line is the heap_live right before sweep termination. However, we triggered GC when heap_live reached next_gc, and there may have been significant allocation between that point and the beginning of sweep termination. Ideally these would be essentially the same, but currently there's scheduler delay when readying the GC goroutine as well as delay from background sweep finalization. We should fix this delay, but in the mean time, to give the user a better idea of how much the heap grew during the whole of garbage collection, report the trigger rather than what the heap size happened to be after the garbage collector finished rolling out of bed. This will also be more useful for heap growth plots. Change-Id: I08476b9fbcfb2de90592405e9c9f434dfb9eb1f8 Reviewed-on: https://go-review.googlesource.com/8512 Reviewed-by: Rick Hudson <rlh@golang.org>
This commit is contained in:
parent
d13f479de3
commit
cb10ff1ef9
@ -314,7 +314,14 @@ func gc(mode int) {
|
||||
if debug.gctrace > 0 {
|
||||
stwprocs, maxprocs = gcprocs(), gomaxprocs
|
||||
tSweepTerm = nanotime()
|
||||
heap0 = memstats.heap_live
|
||||
if mode == gcBackgroundMode {
|
||||
// We started GC when heap_live == next_gc,
|
||||
// but the mutator may have allocated between
|
||||
// then and now. Report heap when GC started.
|
||||
heap0 = memstats.next_gc
|
||||
} else {
|
||||
heap0 = memstats.heap_live
|
||||
}
|
||||
}
|
||||
|
||||
if trace.enabled {
|
||||
|
Loading…
Reference in New Issue
Block a user