package main import ( "log" "os" "runtime/pprof" "time" ) type pprofDemo struct { } func (demo *pprofDemo) run() { for i := 0; i < 10; i++ { log.Printf("Loop %d", i) time.Sleep(1*time.Second) } } func main() { log.SetFlags(log.LstdFlags | log.Lshortfile) // cpu cpuFile, err := os.OpenFile("D://Test//test_cpu.pprof", os.O_CREATE|os.O_TRUNC|os.O_RDWR, os.ModePerm) if err != nil { log.Fatal(err) } defer func() { _ = cpuFile.Close() }() defer pprof.StopCPUProfile() if err = pprof.StartCPUProfile(cpuFile); err != nil { log.Fatal(err) } new(pprofDemo).run() // mem memFile, err := os.OpenFile("D://Test//test_mem.pprof", os.O_CREATE|os.O_TRUNC|os.O_RDWR, os.ModePerm) if err != nil { log.Fatal(err) } defer func() { _ = memFile.Close() }() if err = pprof.WriteHeapProfile(memFile);err != nil { log.Fatal(err) } }