【垃圾回收】
1- Go的開發者也不用寫代碼來釋放程序中不再使用的變量和結構占用內存,Go中有獨立的進程,垃圾回收器(GC),處理這些事情。它會搜索不再使用的變量然后釋放它們。
2- 通過runtime包訪問GC進程
3- 通過調用runtime.GC()函數顯式的觸發GC。使用場景為內存不足時,調用該函數,但是會對程序有短時的性能下降,因為GC進程在執行
4- 如果想知道當前的內存狀態,可以使用
var m runtime.MemStates runtime.ReadMemStats(&m) fmt.Printf("%d Kb\n",m.Alloc/1024)
【SetFinalizer】
如果需要在一個對象object被從內存中移除前執行一些特殊操作,比如寫日志等,可以通過調用以下方式調用函數來實現
runtime.SetFinalizer(obj, func(obj *typeObj))
在對象被GC進程選中並從內存中移除前,SetFinalizer都不會執行,即使程序正常結束或者發生錯誤