| // Copyright 2009 The Go Authors. All rights reserved. | |
| // Use of this source code is governed by a BSD-style | |
| // license that can be found in the LICENSE file. | |
| package runtime | |
| import "unsafe" | |
| type MemStatsType struct { | |
| // General statistics. | |
| // Not locked during update; approximate. | |
| Alloc uint64 // bytes allocated and still in use | |
| TotalAlloc uint64 // bytes allocated (even if freed) | |
| Sys uint64 // bytes obtained from system (should be sum of XxxSys below) | |
| Lookups uint64 // number of pointer lookups | |
| Mallocs uint64 // number of mallocs | |
| Frees uint64 // number of frees | |
| // Main allocation heap statistics. | |
| HeapAlloc uint64 // bytes allocated and still in use | |
| HeapSys uint64 // bytes obtained from system | |
| HeapIdle uint64 // bytes in idle spans | |
| HeapInuse uint64 // bytes in non-idle span | |
| HeapObjects uint64 // total number of allocated objects | |
| // Low-level fixed-size structure allocator statistics. | |
| // Inuse is bytes used now. | |
| // Sys is bytes obtained from system. | |
| StackInuse uint64 // bootstrap stacks | |
| StackSys uint64 | |
| MSpanInuse uint64 // mspan structures | |
| MSpanSys uint64 | |
| MCacheInuse uint64 // mcache structures | |
| MCacheSys uint64 | |
| BuckHashSys uint64 // profiling bucket hash table | |
| // Garbage collector statistics. | |
| NextGC uint64 | |
| PauseTotalNs uint64 | |
| PauseNs [256]uint64 // most recent GC pause times | |
| NumGC uint32 | |
| EnableGC bool | |
| DebugGC bool | |
| // Per-size allocation statistics. | |
| // Not locked during update; approximate. | |
| // 61 is NumSizeClasses in the C code. | |
| BySize [61]struct { | |
| Size uint32 | |
| Mallocs uint64 | |
| Frees uint64 | |
| } | |
| } | |
| var sizeof_C_MStats uintptr // filled in by malloc.goc | |
| func init() { | |
| if sizeof_C_MStats != unsafe.Sizeof(MemStats) { | |
| println(sizeof_C_MStats, unsafe.Sizeof(MemStats)) | |
| panic("MStats vs MemStatsType size mismatch") | |
| } | |
| } | |
| // MemStats holds statistics about the memory system. | |
| // The statistics may be out of date, as the information is | |
| // updated lazily from per-thread caches. | |
| // Use UpdateMemStats to bring the statistics up to date. | |
| var MemStats MemStatsType | |
| // UpdateMemStats brings MemStats up to date. | |
| func UpdateMemStats() | |
| // GC runs a garbage collection. | |
| func GC() |