1 // Copyright 2009 The Go Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style
3 // license that can be found in the LICENSE file.
9 // Note: the MemStats struct should be kept in sync with
10 // struct MStats in malloc.h
12 // A MemStats records statistics about the memory allocator.
13 type MemStats
struct {
14 // General statistics.
15 Alloc
uint64 // bytes allocated and still in use
16 TotalAlloc
uint64 // bytes allocated (even if freed)
17 Sys
uint64 // bytes obtained from system (should be sum of XxxSys below)
18 Lookups
uint64 // number of pointer lookups
19 Mallocs
uint64 // number of mallocs
20 Frees
uint64 // number of frees
22 // Main allocation heap statistics.
23 HeapAlloc
uint64 // bytes allocated and still in use
24 HeapSys
uint64 // bytes obtained from system
25 HeapIdle
uint64 // bytes in idle spans
26 HeapInuse
uint64 // bytes in non-idle span
27 HeapReleased
uint64 // bytes released to the OS
28 HeapObjects
uint64 // total number of allocated objects
30 // Low-level fixed-size structure allocator statistics.
31 // Inuse is bytes used now.
32 // Sys is bytes obtained from system.
33 StackInuse
uint64 // bootstrap stacks
35 MSpanInuse
uint64 // mspan structures
37 MCacheInuse
uint64 // mcache structures
39 BuckHashSys
uint64 // profiling bucket hash table
41 // Garbage collector statistics.
42 NextGC
uint64 // next run in HeapAlloc time (bytes)
43 LastGC
uint64 // last run in absolute time (ns)
45 PauseNs
[256]uint64 // circular buffer of recent GC pause times, most recent at [(NumGC+255)%256]
50 // Per-size allocation statistics.
51 // 61 is NumSizeClasses in the C code.
59 var Sizeof_C_MStats
uintptr // filled in by malloc.goc
61 var VmemStats MemStats
64 if Sizeof_C_MStats
!= unsafe
.Sizeof(VmemStats
) {
65 println(Sizeof_C_MStats
, unsafe
.Sizeof(VmemStats
))
66 panic("MStats vs MemStatsType size mismatch")
70 // ReadMemStats populates m with memory allocator statistics.
71 func ReadMemStats(m
*MemStats
)
73 // GC runs a garbage collection.