package stats

import (
	"runtime"
)

type MemStatus struct {
	Goroutines int
	All        uint64
	Used       uint64
	Free       uint64
	Self       uint64
	Heap       uint64
	Stack      uint64
}

func MemStat() MemStatus {
	mem := MemStatus{}
	mem.Goroutines = runtime.NumGoroutine()
	memStat := new(runtime.MemStats)
	runtime.ReadMemStats(memStat)
	mem.Self = memStat.Alloc
	mem.Heap = memStat.HeapAlloc
	mem.Stack = memStat.StackInuse

	mem.fillInStatus()
	return mem
}