Go笔记-垃圾回收集和SetFinalizer

【垃圾回收】
    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都不会执行,即使程序正常结束或者发生错误
 

转载于:https://www.cnblogs.com/ymkfnuiwgij/p/7912320.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值