2016-04-15 5 views
1

При выполнении профиля кучи с использованием go tool pprof я вижу некоторые записи, такие как github.com/anacrolix/utp.glob.func1. Это не соответствует какой-либо именованной функции, которую я вижу, я предполагаю, что это закрытие. Что делает glob? Как связать имена, подобные этому, с соответствующей функцией? enter image description hereglob.func в профилях кучи pprof

ответ

2

glob относится к глобальной окружающей среде, func1 означает анонимную функцию. Поэтому он должен ссылаться на некоторую глобальную анонимную функцию. Проверьте this example и его паническую информацию:

Пример:

package main 

import (
    "fmt" 
) 

var (
    p = func() string { 
     panic("a") 

     return "asdf" 
    }() 
) 

func main() { 
    fmt.Println(p) 
} 

Panic информация:

panic: a 

goroutine 1 [running]: 
panic(0x128360, 0x1040a120) 
    /usr/local/go/src/runtime/panic.go:464 +0x700 
main.glob.func1(0x0, 0x0) 
    /tmp/sandbox715198144/main.go:9 +0x80 
main.init() 
    /tmp/sandbox715198144/main.go:12 +0xa0