Source file src/pkg/runtime/mem.go
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.
4
5 package runtime
6
7 import "unsafe"
8
9 // A MemStats records statistics about the memory allocator.
10 type MemStats struct {
11 // General statistics.
12 Alloc uint64 // bytes allocated and still in use
13 TotalAlloc uint64 // bytes allocated (even if freed)
14 Sys uint64 // bytes obtained from system (should be sum of XxxSys below)
15 Lookups uint64 // number of pointer lookups
16 Mallocs uint64 // number of mallocs
17 Frees uint64 // number of frees
18
19 // Main allocation heap statistics.
20 HeapAlloc uint64 // bytes allocated and still in use
21 HeapSys uint64 // bytes obtained from system
22 HeapIdle uint64 // bytes in idle spans
23 HeapInuse uint64 // bytes in non-idle span
24 HeapReleased uint64 // bytes released to the OS
25 HeapObjects uint64 // total number of allocated objects
26
27 // Low-level fixed-size structure allocator statistics.
28 // Inuse is bytes used now.
29 // Sys is bytes obtained from system.
30 StackInuse uint64 // bootstrap stacks
31 StackSys uint64
32 MSpanInuse uint64 // mspan structures
33 MSpanSys uint64
34 MCacheInuse uint64 // mcache structures
35 MCacheSys uint64
36 BuckHashSys uint64 // profiling bucket hash table
37
38 // Garbage collector statistics.
39 NextGC uint64 // next run in HeapAlloc time (bytes)
40 LastGC uint64 // last run in absolute time (ns)
41 PauseTotalNs uint64
42 PauseNs [256]uint64 // most recent GC pause times
43 NumGC uint32
44 EnableGC bool
45 DebugGC bool
46
47 // Per-size allocation statistics.
48 // 61 is NumSizeClasses in the C code.
49 BySize [61]struct {
50 Size uint32
51 Mallocs uint64
52 Frees uint64
53 }
54 }
55
56 var sizeof_C_MStats uintptr // filled in by malloc.goc
57
58 var memStats MemStats
59
60 func init() {
61 if sizeof_C_MStats != unsafe.Sizeof(memStats) {
62 println(sizeof_C_MStats, unsafe.Sizeof(memStats))
63 panic("MStats vs MemStatsType size mismatch")
64 }
65 }
66
67 // ReadMemStats populates m with memory allocator statistics.
68 func ReadMemStats(m *MemStats)
69
70 // GC runs a garbage collection.
71 func GC()