golang自带内存回收机制--GC。GC通过独立的进程执行,它会搜索不再使用的变量,并释放。需要注意的是,进行GC会占用机器资源。

GC是自动进行的。如果要手动进行GC,可以调用runtime.GC()函数,进行显式GC。

SetFinalizer

func SetFinalizer(obj interface{}, finalizer interface{})
objfinalizerobj
SetFinalizerobjfinalizerfinalizerobj
obj finalizer(obj)obj
objSetFinalizerobjobj
SetFinalizer

Demo

finalizer
finalizer

code

package main

import (
        "log"
        "runtime"
        "time"
)

type Road int

func findRoad(r *Road) {

        log.Println("road:", *r)
}

func entry(){
        var rd Road = Road(999)
        r := &rd

        runtime.SetFinalizer(r, findRoad)
}

func main(){

        entry()

        for i:=0; i < 10; i++ {
                time.Sleep(time.Second)
                runtime.GC()
        }

}

output

2019/02/07 17:27:07 road: 999

参考