runtime.go 584 B

123456789101112131415161718192021222324252627282930
  1. package prof
  2. import (
  3. "fmt"
  4. "runtime"
  5. "time"
  6. )
  7. const (
  8. defaultInterval = time.Second * 5
  9. mega = 1024 * 1024
  10. )
  11. func DisplayStats(interval ...time.Duration) {
  12. duration := defaultInterval
  13. for _, val := range interval {
  14. duration = val
  15. }
  16. go func() {
  17. ticker := time.NewTicker(duration)
  18. defer ticker.Stop()
  19. for range ticker.C {
  20. var m runtime.MemStats
  21. runtime.ReadMemStats(&m)
  22. fmt.Printf("Goroutines: %d, Alloc: %vm, TotalAlloc: %vm, Sys: %vm, NumGC: %v\n",
  23. runtime.NumGoroutine(), m.Alloc/mega, m.TotalAlloc/mega, m.Sys/mega, m.NumGC)
  24. }
  25. }()
  26. }