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:
parent
3f915f51a8
commit
591c74ad20
@ -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\
|
||||||
|
@ -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
69
src/pkg/runtime/mem.go
Normal 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()
|
Loading…
Reference in New Issue
Block a user