pprof_demo.go 862 B

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. package main
  2. import (
  3. "log"
  4. "os"
  5. "runtime/pprof"
  6. "time"
  7. )
  8. type pprofDemo struct {
  9. }
  10. func (demo *pprofDemo) run() {
  11. for i := 0; i < 10; i++ {
  12. log.Printf("Loop %d", i)
  13. time.Sleep(1*time.Second)
  14. }
  15. }
  16. func main() {
  17. log.SetFlags(log.LstdFlags | log.Lshortfile)
  18. // cpu
  19. cpuFile, err := os.OpenFile("D://Test//test_cpu.pprof", os.O_CREATE|os.O_TRUNC|os.O_RDWR, os.ModePerm)
  20. if err != nil {
  21. log.Fatal(err)
  22. }
  23. defer func() {
  24. _ = cpuFile.Close()
  25. }()
  26. defer pprof.StopCPUProfile()
  27. if err = pprof.StartCPUProfile(cpuFile); err != nil {
  28. log.Fatal(err)
  29. }
  30. new(pprofDemo).run()
  31. // mem
  32. memFile, err := os.OpenFile("D://Test//test_mem.pprof", os.O_CREATE|os.O_TRUNC|os.O_RDWR, os.ModePerm)
  33. if err != nil {
  34. log.Fatal(err)
  35. }
  36. defer func() {
  37. _ = memFile.Close()
  38. }()
  39. if err = pprof.WriteHeapProfile(memFile);err != nil {
  40. log.Fatal(err)
  41. }
  42. }