github.com/status-im/status-go@v1.1.0/profiling/heap.go (about) 1 package profiling 2 3 import ( 4 "os" 5 "path/filepath" 6 "runtime" 7 "runtime/pprof" 8 ) 9 10 // MemFilename is a filename in which the memory profiling is stored. 11 const MemFilename = "status_mem.prof" 12 13 var memFile *os.File 14 15 // WriteHeapFile writes heap memory to the file. 16 func WriteHeapFile(dataDir string) error { 17 var err error 18 19 if memFile == nil { 20 memFile, err = os.Create(filepath.Join(dataDir, MemFilename)) 21 if err != nil { 22 return err 23 } 24 defer func() { 25 memFile.Close() //nolint: errcheck 26 memFile = nil 27 }() 28 } 29 30 runtime.GC() 31 err = pprof.WriteHeapProfile(memFile) 32 33 return err 34 }