mirror of git://gcc.gnu.org/git/gcc.git
				
				
				
			
		
			
				
	
	
		
			77 lines
		
	
	
		
			2.3 KiB
		
	
	
	
		
			Go
		
	
	
	
			
		
		
	
	
			77 lines
		
	
	
		
			2.3 KiB
		
	
	
	
		
			Go
		
	
	
	
| // 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"
 | |
| 
 | |
| // Note: the MemStats struct should be kept in sync with
 | |
| // struct MStats in malloc.h
 | |
| 
 | |
| // A MemStats records statistics about the memory allocator.
 | |
| type MemStats struct {
 | |
| 	// General statistics.
 | |
| 	Alloc      uint64 // bytes allocated and still in use
 | |
| 	TotalAlloc uint64 // bytes allocated (even if freed)
 | |
| 	Sys        uint64 // bytes obtained from system (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
 | |
| 	HeapReleased uint64 // bytes released to the OS
 | |
| 	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
 | |
| 	GCSys       uint64 // GC metadata
 | |
| 	OtherSys    uint64 // other system allocations
 | |
| 
 | |
| 	// Garbage collector statistics.
 | |
| 	NextGC       uint64 // next run in HeapAlloc time (bytes)
 | |
| 	LastGC       uint64 // last run in absolute time (ns)
 | |
| 	PauseTotalNs uint64
 | |
| 	PauseNs      [256]uint64 // circular buffer of recent GC pause times, most recent at [(NumGC+255)%256]
 | |
| 	NumGC        uint32
 | |
| 	EnableGC     bool
 | |
| 	DebugGC      bool
 | |
| 
 | |
| 	// Per-size allocation statistics.
 | |
| 	// 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
 | |
| 
 | |
| var VmemStats MemStats
 | |
| 
 | |
| func init() {
 | |
| 	if Sizeof_C_MStats != unsafe.Sizeof(VmemStats) {
 | |
| 		println(Sizeof_C_MStats, unsafe.Sizeof(VmemStats))
 | |
| 		panic("MStats vs MemStatsType size mismatch")
 | |
| 	}
 | |
| }
 | |
| 
 | |
| // ReadMemStats populates m with memory allocator statistics.
 | |
| func ReadMemStats(m *MemStats)
 | |
| 
 | |
| // GC runs a garbage collection.
 | |
| func GC()
 |