10.8 垃圾回收和 SetFinalizer
通过调用 runtime.GC()
函数可以显式的触发 GC,但这只在某些罕见的场景下才有用,比如当内存资源不足时调用 runtime.GC()
,它会在此函数执行的点上立即释放一大片内存,此时程序可能会有短时的性能下降(因为 GC
进程在执行)。
如果想知道当前的内存状态,可以使用:
如果需要在一个对象 被从内存移除前执行一些特殊操作,比如写到日志文件中,可以通过如下方式调用函数来实现:
func(obj *typeObj)
需要一个 typeObj
类型的指针参数 ,特殊操作会在它上面执行。func
也可以是一个匿名函数。
练习 10.17 main_stack.go
从练习 10.16 开始(它基于结构体实现了一个栈结构),为栈的实现 () 创建一个单独的包 stack
,并从 包 main.stack.go
中调用它。