©
本文档使用
php.cn手册 发布
import "runtime/debug"
概况
索引
程序包调试了包含程序在运行时进行调试的功能。
func FreeOSMemory()
func PrintStack()
func ReadGCStats(stats *GCStats)
func SetGCPercent(percent int) int
func SetMaxStack(bytes int) int
func SetMaxThreads(threads int) int
func SetPanicOnFault(enabled bool) bool
func SetTraceback(level string)
func Stack() []byte
func WriteHeapDump(fd uintptr)
type GCStats
garbage.go stack.go stubs.go
func FreeOSMemory()
FreeOSMemory 强制进行垃圾收集,然后尝试尽可能多地将内存返回给操作系统。(即使未调用此函数,运行时也会逐渐将内存返回到后台任务中的操作系统。)
func PrintStack()
PrintStack 将由 runtime.Stack 返回的堆栈跟踪打印到标准错误。
func ReadGCStats(stats *GCStats)
ReadGCStats 将有关垃圾收集的统计信息读入统计信息。暂停历史记录中的条目数与系统有关; stats.Pause 片断将在足够大时重用,否则重新分配。ReadGCStats 可能会使用 stats.Pause 片断的全部容量。如果 stats.PauseQuantiles 不是空的,ReadGCStats 会用分位数来填充总结暂停时间的分布。例如,如果 len(stats.PauseQuantiles)为5,则将填充最小值,25%,50%,75%和最大暂停时间。
func SetGCPercent(percent int) int
SetGCPercent 设置垃圾收集目标百分比:当新分配的数据与上一次收集后剩余的实时数据的比率达到此百分比时,触发收集。SetGCPercent 返回先前的设置。初始设置是启动时 GOGC 环境变量的值,如果未设置该变量,则为100。负数百分比会禁用垃圾回收。
func SetMaxStack(bytes int) int
SetMaxStack 设置单个 goroutine 堆栈可以使用的最大内存量。如果任何 goroutine 在增长堆栈时超过此限制,则该程序崩溃。SetMaxStack 返回先前的设置。初始设置在64位系统上为1 GB,在32位系统上为250 MB。
SetMaxStack 主要用于限制进入无限递归的 goroutines 所造成的破坏。它只会限制未来的堆栈增长。
func SetMaxThreads(threads int) int
SetMaxThreads 设置 Go 程序可以使用的最大操作系统线程数。如果它试图使用超过这么多,程序崩溃。SetMaxThreads 返回先前的设置。初始设置是10,000个线程。
该限制控制操作系统线程的数量,而不是 goroutines 的数量。Go 程序仅在 goroutine 准备好运行时创建新线程,但由于使用 runtime.LockOSThread,所有现有线程在系统调用,cgo 调用中被阻止,或者被锁定到其他 goroutine 。
SetMaxThreads 主要用于限制创建无限数量线程的程序所造成的损害。这个想法是在取消操作系统之前取消该程序。
func SetPanicOnFault(enabled bool) bool
当程序在意外(非零)地址发生故障时,SetPanicOnFault 控制运行时的行为。这种故障通常是由运行时内存损坏等错误引起的,所以默认响应是使程序崩溃。使用内存映射文件的程序或内存的不安全操作可能会导致出现故障的非零地址发生故障; SetPanicOnFault 允许这样的程序请求运行时只触发恐慌,而不是崩溃。SetPanicOnFault 仅适用于当前的 goroutine 。它返回以前的设置。
func SetTraceback(level string)
SetTraceback 在由于未发现的恐慌或内部运行时错误而退出之前,设置运行时在其打印的回溯中打印的详细信息量。level 参数采用与 GOTRACEBACK 环境变量相同的值。例如,SetTraceback(“all”)确保程序在崩溃时打印所有的 goroutine 。详情请参阅软件包运行时文档。如果 SetTraceback 的调用级别低于环境变量的级别,则调用将被忽略。
func Stack() []byte
Stack 返回调用它的 goroutine 的格式化堆栈跟踪。它调用 runtime.Stack 具有足够大的缓冲区来捕获整个跟踪。
func WriteHeapDump(fd uintptr)
WriteHeapDump 将堆和其中的对象的描述写入给定的文件描述符。
WriteHeapDump 停止所有 goroutine 的执行,直到堆转储完全写入。因此,文件描述符一定不能连接到另一端在同一个 Go 进程中的管道或套接字; 相反,使用临时文件或网络套接字。
堆转储格式在https://golang.org/s/go15heapdump中定义。
GCStats 收集有关最近垃圾收集的信息。
type GCStats struct { LastGC time.Time // time of last collection NumGC int64 // number of garbage collections PauseTotal time.Duration // total pause for all collections Pause []time.Duration // pause history, most recent first PauseEnd []time.Time // pause end times history, most recent first PauseQuantiles []time.Duration}