github.com/axw/llgo@v0.0.0-20160805011314-95b5fe4dca20/third_party/gofrontend/libgo/go/runtime/mem.go (about)

     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  // Note: the MemStats struct should be kept in sync with
    10  // struct MStats in malloc.h
    11  
    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
    21  
    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
    29  
    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
    42  
    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  	PauseEnd      [256]uint64 // circular buffer of recent GC pause end times
    49  	NumGC         uint32
    50  	GCCPUFraction float64 // fraction of CPU time used by GC
    51  	EnableGC      bool
    52  	DebugGC       bool
    53  
    54  	// Per-size allocation statistics.
    55  	// 61 is NumSizeClasses in the C code.
    56  	BySize [61]struct {
    57  		Size    uint32
    58  		Mallocs uint64
    59  		Frees   uint64
    60  	}
    61  }
    62  
    63  var Sizeof_C_MStats uintptr // filled in by malloc.goc
    64  
    65  func init() {
    66  	var memStats MemStats
    67  	if Sizeof_C_MStats != unsafe.Sizeof(memStats) {
    68  		println(Sizeof_C_MStats, unsafe.Sizeof(memStats))
    69  		panic("MStats vs MemStatsType size mismatch")
    70  	}
    71  }
    72  
    73  // ReadMemStats populates m with memory allocator statistics.
    74  func ReadMemStats(m *MemStats)
    75  
    76  // GC runs a garbage collection.
    77  func GC()