老男孩教育专注IT教育10余年,只培养IT技术精英

全国免费咨询电话(渠道合作):400-609-2893

Go语言什么时候会触发GC?Go开发培训

老男孩IT教育

常见问题

2021年11月19日 14:38

GO作为一门较新的编程语言,在早期经常被开发人员反应垃圾回收(即GC)机制中STW的时间过长,因此就诞生了一个问题,GO语言中什么时候才会触发GC机制呢?如果你也不太清楚,请看下文:

       GO作为一门较新的编程语言,在早期经常被开发人员反应垃圾回收(即GC)机制中STW的时间过长,因此就诞生了一个问题,GO语言中什么时候才会触发GC机制呢?如果你也不太清楚,请看下文:

Go语言

       首先问题来了,什么是GC机制?

       在计算机科学中,GC机制是一种自动管理内存的机制,垃圾回收器会去尝试回收程序不再使用的对象及其所占用的内存。

       那为什么需要GC呢?

       因为手动管理内存比较麻烦,如果管理出错或管漏内存也会更麻烦,将会直接导致程序不稳定,也就是持续泄露,甚至直接崩溃。

       GC的触发场景:

       1、系统触发:运行时自行根据内置的条件,只要检查和发现到,就会进行GC处理,维护整个应用程序的可用性;

       2、手动触发:开发者在业务代码中自行调用runtime.GC方法来触发GC行为。

       系统触发:

       在此场景中,GO源码的文件中,明确标识了GC系统触发的三种场景,分别如下:

       gcTriggerHeap:当所分配的堆大小达到阈值(由控制器计算的触发堆的大小)时,将会触发;

       gcTriggerTime:当距离上一个GC周期的时间超过一定时间时,将会触发;

       gcTriggerCycle:如果没有开启GC,则启动GC;

       手动触发:

       在此场景下,GO语言中仅有runtime.GC方法可以触发,一般在什么业务场景中,要涉及到手动干涉GC,强制触发它呢?

       需要手动强制触发的场景极其少见,可能会是在某些业务方法执行完后,因其占用了过多内存,需要人为释放,又或者是debug程序所需。

       关于"Go语言什么时候会触发GC?"的话题到这里就结束了,如果还想了解更多关于Go语言的技术知识,推荐选择老男孩教育,欢迎大家周六来现场试听,试听就送内部教材一本。

       推荐阅读:

       Go语言都有哪些特性?老男孩GO程序开发

       Go语言可以应用在哪些领域?Go开发培训

       学习GO语言必须要掌握的几个开源框架!GO开发培训

本文经授权发布,不代表老男孩教育立场。如若转载请联系原作者。