1
0
mirror of https://github.com/golang/go synced 2024-11-25 16:37:57 -07:00

runtime: split non-debugging malloc interface out of debug.go into mem.go

R=r, dsymonds
CC=golang-dev
https://golang.org/cl/4273045
This commit is contained in:
Russ Cox 2011-03-11 15:09:21 -05:00
parent 3f915f51a8
commit 591c74ad20
3 changed files with 70 additions and 64 deletions

View File

@ -22,6 +22,7 @@ GOFILES=\
debug.go\ debug.go\
error.go\ error.go\
extern.go\ extern.go\
mem.go\
sig.go\ sig.go\
softfloat64.go\ softfloat64.go\
type.go\ type.go\

View File

@ -4,8 +4,6 @@
package runtime package runtime
import "unsafe"
// Breakpoint() executes a breakpoint trap. // Breakpoint() executes a breakpoint trap.
func Breakpoint() func Breakpoint()
@ -31,65 +29,6 @@ func Cgocalls() int64
// Goroutines returns the number of goroutines that currently exist. // Goroutines returns the number of goroutines that currently exist.
func Goroutines() int32 func Goroutines() int32
type MemStatsType struct {
// General statistics.
// Not locked during update; approximate.
Alloc uint64 // bytes allocated and still in use
TotalAlloc uint64 // bytes allocated (even if freed)
Sys uint64 // bytes obtained from system (should be 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
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
// Garbage collector statistics.
NextGC uint64
PauseTotalNs uint64
PauseNs [256]uint64 // most recent GC pause times
NumGC uint32
EnableGC bool
DebugGC bool
// Per-size allocation statistics.
// Not locked during update; approximate.
// 61 is NumSizeClasses in the C code.
BySize [61]struct {
Size uint32
Mallocs uint64
Frees uint64
}
}
var sizeof_C_MStats int // filled in by malloc.goc
func init() {
if sizeof_C_MStats != unsafe.Sizeof(MemStats) {
println(sizeof_C_MStats, unsafe.Sizeof(MemStats))
panic("MStats vs MemStatsType size mismatch")
}
}
// MemStats holds statistics about the memory system.
// The statistics are only approximate, as they are not interlocked on update.
var MemStats MemStatsType
// Alloc allocates a block of the given size. // Alloc allocates a block of the given size.
// FOR TESTING AND DEBUGGING ONLY. // FOR TESTING AND DEBUGGING ONLY.
func Alloc(uintptr) *byte func Alloc(uintptr) *byte
@ -102,9 +41,6 @@ func Free(*byte)
// FOR TESTING AND DEBUGGING ONLY. // FOR TESTING AND DEBUGGING ONLY.
func Lookup(*byte) (*byte, uintptr) func Lookup(*byte) (*byte, uintptr)
// GC runs a garbage collection.
func GC()
// MemProfileRate controls the fraction of memory allocations // MemProfileRate controls the fraction of memory allocations
// that are recorded and reported in the memory profile. // that are recorded and reported in the memory profile.
// The profiler aims to sample an average of // The profiler aims to sample an average of

69
src/pkg/runtime/mem.go Normal file
View File

@ -0,0 +1,69 @@
// 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"
type MemStatsType struct {
// General statistics.
// Not locked during update; approximate.
Alloc uint64 // bytes allocated and still in use
TotalAlloc uint64 // bytes allocated (even if freed)
Sys uint64 // bytes obtained from system (should be 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
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
// Garbage collector statistics.
NextGC uint64
PauseTotalNs uint64
PauseNs [256]uint64 // most recent GC pause times
NumGC uint32
EnableGC bool
DebugGC bool
// Per-size allocation statistics.
// Not locked during update; approximate.
// 61 is NumSizeClasses in the C code.
BySize [61]struct {
Size uint32
Mallocs uint64
Frees uint64
}
}
var sizeof_C_MStats int // filled in by malloc.goc
func init() {
if sizeof_C_MStats != unsafe.Sizeof(MemStats) {
println(sizeof_C_MStats, unsafe.Sizeof(MemStats))
panic("MStats vs MemStatsType size mismatch")
}
}
// MemStats holds statistics about the memory system.
// The statistics are only approximate, as they are not interlocked on update.
var MemStats MemStatsType
// GC runs a garbage collection.
func GC()