golang垃圾回收和SetFinalizer
golang自带内存回收机制--GC。GC通过独立的进程执行,它会搜索不再使用的变量,并释放。需要注意的是,进行GC会占用机器资源。 GC是自动进行的。如果要手动进行GC,可以调用runtime.GC()函数,进行显式GC。 SetFinalizer一个对象object被GC时,如果需要执行一些特殊操作,比如,发信号,或者写日志等,可以通过调用函数 参数
当GC发现 这样,
Demo以下代码中,在函数entry()中定义局部变量,并设置 在main中,手动触发GC,查看 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
参考SetFinalizer Go入门指南--垃圾回收 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |