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.

Reply via email to