mirror of
https://github.com/golang/go.git
synced 2025-12-08 06:10:04 +00:00
runtime: fix memstats
Newly allocated memory is subtracted from inuse, while it was never added to inuse. Span leftovers are subtracted from both inuse and idle, while they were never added. Fixes #8544. Fixes #8430. LGTM=khr, cookieo9 R=golang-codereviews, khr, cookieo9 CC=golang-codereviews, rlh, rsc https://golang.org/cl/130200044
This commit is contained in:
parent
2de65cad54
commit
30ef2c7deb
3 changed files with 34 additions and 13 deletions
|
|
@ -16,10 +16,26 @@ func TestMemStats(t *testing.T) {
|
|||
// Test that MemStats has sane values.
|
||||
st := new(MemStats)
|
||||
ReadMemStats(st)
|
||||
if st.HeapSys == 0 || st.StackSys == 0 || st.MSpanSys == 0 || st.MCacheSys == 0 ||
|
||||
st.BuckHashSys == 0 || st.GCSys == 0 || st.OtherSys == 0 {
|
||||
t.Fatalf("Zero sys value: %+v", *st)
|
||||
|
||||
// Everything except HeapReleased, because it indeed can be 0.
|
||||
if st.Alloc == 0 || st.TotalAlloc == 0 || st.Sys == 0 || st.Lookups == 0 ||
|
||||
st.Mallocs == 0 || st.Frees == 0 || st.HeapAlloc == 0 || st.HeapSys == 0 ||
|
||||
st.HeapIdle == 0 || st.HeapInuse == 0 || st.HeapObjects == 0 || st.StackInuse == 0 ||
|
||||
st.StackSys == 0 || st.MSpanInuse == 0 || st.MSpanSys == 0 || st.MCacheInuse == 0 ||
|
||||
st.MCacheSys == 0 || st.BuckHashSys == 0 || st.GCSys == 0 || st.OtherSys == 0 ||
|
||||
st.NextGC == 0 || st.NumGC == 0 {
|
||||
t.Fatalf("Zero value: %+v", *st)
|
||||
}
|
||||
|
||||
if st.Alloc > 1e10 || st.TotalAlloc > 1e11 || st.Sys > 1e10 || st.Lookups > 1e10 ||
|
||||
st.Mallocs > 1e10 || st.Frees > 1e10 || st.HeapAlloc > 1e10 || st.HeapSys > 1e10 ||
|
||||
st.HeapIdle > 1e10 || st.HeapInuse > 1e10 || st.HeapObjects > 1e10 || st.StackInuse > 1e10 ||
|
||||
st.StackSys > 1e10 || st.MSpanInuse > 1e10 || st.MSpanSys > 1e10 || st.MCacheInuse > 1e10 ||
|
||||
st.MCacheSys > 1e10 || st.BuckHashSys > 1e10 || st.GCSys > 1e10 || st.OtherSys > 1e10 ||
|
||||
st.NextGC > 1e10 || st.NumGC > 1e9 {
|
||||
t.Fatalf("Insanely high value (overflow?): %+v", *st)
|
||||
}
|
||||
|
||||
if st.Sys != st.HeapSys+st.StackSys+st.MSpanSys+st.MCacheSys+
|
||||
st.BuckHashSys+st.GCSys+st.OtherSys {
|
||||
t.Fatalf("Bad sys value: %+v", *st)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue