mirror of
https://github.com/golang/go.git
synced 2025-12-08 06:10:04 +00:00
runtime: store consistent total allocation stats as uint64
Currently the consistent total allocation stats are managed as uintptrs, which means they can easily overflow on 32-bit systems. Fix this by storing these stats as uint64s. This will cause some minor performance degradation on 32-bit systems, but there really isn't a way around this, and it affects the correctness of the metrics we export. Fixes #52680. Change-Id: I7e6ca44047d46b4bd91c6f87c2d29f730e0d6191 Reviewed-on: https://go-review.googlesource.com/c/go/+/403758 Run-TryBot: Michael Knyszek <mknyszek@google.com> TryBot-Result: Gopher Robot <gobot@golang.org> Auto-Submit: Michael Knyszek <mknyszek@google.com> Reviewed-by: Austin Clements <austin@google.com>
This commit is contained in:
parent
bccce90289
commit
7c404d59db
4 changed files with 40 additions and 38 deletions
|
|
@ -388,13 +388,13 @@ func (a *heapStatsAggregate) compute() {
|
|||
memstats.heapStats.read(&a.heapStatsDelta)
|
||||
|
||||
// Calculate derived stats.
|
||||
a.totalAllocs = uint64(a.largeAllocCount)
|
||||
a.totalFrees = uint64(a.largeFreeCount)
|
||||
a.totalAllocated = uint64(a.largeAlloc)
|
||||
a.totalFreed = uint64(a.largeFree)
|
||||
a.totalAllocs = a.largeAllocCount
|
||||
a.totalFrees = a.largeFreeCount
|
||||
a.totalAllocated = a.largeAlloc
|
||||
a.totalFreed = a.largeFree
|
||||
for i := range a.smallAllocCount {
|
||||
na := uint64(a.smallAllocCount[i])
|
||||
nf := uint64(a.smallFreeCount[i])
|
||||
na := a.smallAllocCount[i]
|
||||
nf := a.smallFreeCount[i]
|
||||
a.totalAllocs += na
|
||||
a.totalFrees += nf
|
||||
a.totalAllocated += na * uint64(class_to_size[i])
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue