package main import "runtime"
func main() { m := new(runtime.MemStats) runtime.ReadMemStats(m) cap := 1024 println("debug0") s := make([]byte, cap) println("debug1") _ = s runtime.ReadMemStats(m) println("memstats:", m.Alloc, m.Mallocs) } I use go1.4.2 and In go source code add mallocgc debug info here is the result: debug0 mallocgc: 1024 mallocgc: 272 mallocgc: 32 debug1 I doubt there is other goroutine call the mallocgc but if I use go test -bench="." makeslice_test.go func BenchmarkMakeSlice2(b *testing.B) { b.ReportAllocs() cap := 1024 for i := 0; i < b.N; i++ { s := make([]byte, cap, cap) _ = s } } the output is: 14120 ns/op 1024 B/op 1 allocs/op I infer the go test know all the mallocgc and also know which is user's source code to call it my guess 在 2016年9月29日星期四 UTC+8下午5:30:54,Dave Cheney写道: > Sorry, you'll have to work harder to generate a memory profile. My > github.com/pkg/profile package may help automate some of the work, but > may introduce a few allocations of its own which you will have to filter > out. -- You received this message because you are subscribed to the Google Groups "golang-nuts" group. To unsubscribe from this group and stop receiving emails from it, send an email to golang-nuts+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.