我想转储 golang memstat
package main
import (
"fmt"
"github.com/dustin/go-humanize"
"runtime"
"time"
)
func main() {
for {
var mem = new(runtime.MemStats)
runtime.ReadMemStats(mem)
fmt.Println("HeapInuse:", humanize.Bytes(mem.HeapInuse), "TotalAlloc:", humanize.Bytes(mem.TotalAlloc))
allocate()
time.Sleep(100 * time.Millisecond)
}
}
func allocate() {
// 0.25MB
_ = make([]byte, int((1<<20)*0.25))
}
当我转储内存信息时
HeapInuse: 418 kB TotalAlloc: 154 kB ? why HeapInuse bigger than TotalAlloc
HeapInuse: 688 kB TotalAlloc: 417 kB
HeapInuse: 950 kB TotalAlloc: 680 kB
HeapInuse: 1.2 MB TotalAlloc: 942 kB
HeapInuse: 1.5 MB TotalAlloc: 1.2 MB
HeapInuse: 1.8 MB TotalAlloc: 1.5 MB
HeapInuse: 2.0 MB TotalAlloc: 1.7 MB
HeapInuse: 2.3 MB TotalAlloc: 2.0 MB
HeapInuse: 2.5 MB TotalAlloc: 2.3 MB
HeapInuse: 2.8 MB TotalAlloc: 2.5 MB
HeapInuse: 3.1 MB TotalAlloc: 2.8 MB
HeapInuse: 3.3 MB TotalAlloc: 3.0 MB
HeapInuse: 3.6 MB TotalAlloc: 3.3 MB
HeapInuse: 3.9 MB TotalAlloc: 3.6 MB
HeapInuse: 4.1 MB TotalAlloc: 3.8 MB
HeapInuse: 4.4 MB TotalAlloc: 4.1 MB
HeapInuse: 410 kB TotalAlloc: 4.4 MB
我发现 HeapInuse 比 TotalAlloc 大?但我无法理解原因?我认为 totalAlloc 应该包括 HeapInuse。
缥缈止盈
相关分类