//go:build windows package tuning import ( "syscall" "unsafe" ) var ( kernel32 = syscall.NewLazyDLL("kernel32.dll") globalMemoryStatusEx = kernel32.NewProc("GlobalMemoryStatusEx") ) type memoryStatusEx struct { dwLength uint32 dwMemoryLoad uint32 ullTotalPhys uint64 ullAvailPhys uint64 ullTotalPageFile uint64 ullAvailPageFile uint64 ullTotalVirtual uint64 ullAvailVirtual uint64 ullAvailExtendedVirtual uint64 } func getSystemTotalMemory() uint64 { var mem memoryStatusEx mem.dwLength = uint32(unsafe.Sizeof(mem)) ret, _, _ := globalMemoryStatusEx.Call(uintptr(unsafe.Pointer(&mem))) if ret == 0 { return 1024 * 1024 * 1024 } return mem.ullTotalPhys }