mirror of
https://github.com/golang/go.git
synced 2025-12-08 06:10:04 +00:00
runtime: add number of forced GCs to MemStats
This adds a counter for the number of times the application forced a GC by, e.g., calling runtime.GC(). This is useful for detecting applications that are overusing/abusing runtime.GC() or debug.FreeOSMemory(). Fixes #18217. Change-Id: I990ab7a313c1b3b7a50a3d44535c460d7c54f47d Reviewed-on: https://go-review.googlesource.com/34067 Reviewed-by: Russ Cox <rsc@golang.org>
This commit is contained in:
parent
d4177877c6
commit
01c6a19e04
4 changed files with 23 additions and 5 deletions
|
|
@ -13,6 +13,9 @@ import (
|
|||
)
|
||||
|
||||
func TestMemStats(t *testing.T) {
|
||||
// Make sure there's at least one forced GC.
|
||||
GC()
|
||||
|
||||
// Test that MemStats has sane values.
|
||||
st := new(MemStats)
|
||||
ReadMemStats(st)
|
||||
|
|
@ -24,7 +27,7 @@ func TestMemStats(t *testing.T) {
|
|||
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.NextGC == 0 || st.NumForcedGC == 0 {
|
||||
t.Fatalf("Zero value: %+v", *st)
|
||||
}
|
||||
|
||||
|
|
@ -33,7 +36,7 @@ func TestMemStats(t *testing.T) {
|
|||
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 || st.PauseTotalNs > 1e11 {
|
||||
st.NextGC > 1e10 || st.NumGC > 1e9 || st.NumForcedGC > 1e9 || st.PauseTotalNs > 1e11 {
|
||||
t.Fatalf("Insanely high value (overflow?): %+v", *st)
|
||||
}
|
||||
|
||||
|
|
@ -72,6 +75,10 @@ func TestMemStats(t *testing.T) {
|
|||
t.Fatalf("PauseTotalNs(%d) < sum PauseNs(%d)", st.PauseTotalNs, pauseTotal)
|
||||
}
|
||||
}
|
||||
|
||||
if st.NumForcedGC > st.NumGC {
|
||||
t.Fatalf("NumForcedGC(%d) > NumGC(%d)", st.NumForcedGC, st.NumGC)
|
||||
}
|
||||
}
|
||||
|
||||
func TestStringConcatenationAllocs(t *testing.T) {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue