if use go1.7
in runtime/malloc.go file add mallocgc debug info and go install and go run 
x.go    I will get a error "signal: segmentation fault"
in go1.4.2 will not

func mallocgc(size uintptr, typ *_type, needzero bool) unsafe.Pointer {
    println("mallocgc:size=", size, "kind=", typ.kind, "needzero=", 
needzero)

在 2016年9月29日星期四 UTC+8下午9:04:58,Dave Cheney写道:
>
> You should use Go 1.7.1 or later. 
>
> On Thursday, 29 September 2016 23:00:25 UTC+10, 刘桂祥 wrote:
>>
>> 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