运行时:系统监控

系统监控本身是一种守护方式来确保有些事情必须要处理。

系统监控的用途

现在很多编程框架都是基于 epoll 来实现异步方式,但是我们有个程序对 epoll 做检查,这种检查要不自己执行,要么写个定时器定期的扫描,然后看看有哪些句柄是返回的。只不过这东西在 Go 的 runtime 是系统监控做这件事。

runtime 三大组件,内存分配器、垃圾回收器、goroutine 调度。实际上除此之外还有系统监控这样一个任务再后台一直在跑,它做些什么事呢?

强制垃圾回收

第一个作用确保垃圾回收肯定被执行,因为垃圾回收器可能会因为某种原因没办法触发,最简单的例子在高峰期的时候分配很多对象,这些对象都是活着,垃圾回收完了以后这些黑色对象是 1GB,按照 Go 语言理论,回收完了以后存活的对象是 1GB,下次回收这预值设置成 2GB,可是低峰期的时候存活的对象可能就是 100MB,很难达到 2GB,就一直触发不了垃圾回收,这就会造成有一大堆对象不被回收,导致内存开销一直居高不下,而垃圾回收器又触发不了。

系统监控程序会定期的检查上次垃圾回收器什么时候执行的,如果发现已经有很长时间没有执行垃圾回收操作了,它就强制执行一次回收。确保当这个预值触发不了的时候总有其他的机制来保障垃圾回收得以正常运行。这是一种保障,也称之为守护。

释放物理内存

第二个作用是在内存分配以后,Heap 中存在大量的自由内存块,这些内存块在高峰时候在低峰时候全部不使用了,这些不使用的自由内存块有可能做了物理映射,所以系统监控程序会定期扫描这些内存块,它会去检查如果这些自由块有 5 分钟预值都没有使用过,闲置时间比较长,它就会建议操作系统去解除物理映射

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值