При выполнении профиля кучи с использованием go tool pprof
я вижу некоторые записи, такие как github.com/anacrolix/utp.glob.func1
. Это не соответствует какой-либо именованной функции, которую я вижу, я предполагаю, что это закрытие. Что делает glob
? Как связать имена, подобные этому, с соответствующей функцией? glob.func в профилях кучи pprof
1
A
ответ
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