Rebase.
[official-gcc.git] / libgo / go / runtime / mem.go
blobfb35535c3a3d0bbeebd5bbbe5c6bda85060930c6
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.
5 package runtime
7 import "unsafe"
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 (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
34 StackSys uint64
35 MSpanInuse uint64 // mspan structures
36 MSpanSys uint64
37 MCacheInuse uint64 // mcache structures
38 MCacheSys uint64
39 BuckHashSys uint64 // profiling bucket hash table
40 GCSys uint64 // GC metadata
41 OtherSys uint64 // other system allocations
43 // Garbage collector statistics.
44 NextGC uint64 // next run in HeapAlloc time (bytes)
45 LastGC uint64 // last run in absolute time (ns)
46 PauseTotalNs uint64
47 PauseNs [256]uint64 // circular buffer of recent GC pause times, most recent at [(NumGC+255)%256]
48 NumGC uint32
49 EnableGC bool
50 DebugGC bool
52 // Per-size allocation statistics.
53 // 61 is NumSizeClasses in the C code.
54 BySize [61]struct {
55 Size uint32
56 Mallocs uint64
57 Frees uint64
61 var Sizeof_C_MStats uintptr // filled in by malloc.goc
63 func init() {
64 var memStats MemStats
65 if Sizeof_C_MStats != unsafe.Sizeof(memStats) {
66 println(Sizeof_C_MStats, unsafe.Sizeof(memStats))
67 panic("MStats vs MemStatsType size mismatch")
71 // ReadMemStats populates m with memory allocator statistics.
72 func ReadMemStats(m *MemStats)
74 // GC runs a garbage collection.
75 func GC()