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

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

Golang中的垃圾回收是如何操作的?老男孩GO培训

老男孩IT教育

常见问题

2021年8月3日 18:17

如今有不少开发者选择学习GO语言,GO在近几年来确实发展的不错,市场需求量也在慢慢增长,虽然远不及Java这些主流语言,但学会GO语言却是我们面试中的一个加分项,你知道GO语言中的垃圾回收机制吗?本文主要介绍下垃圾回收机制的概念,具体请看下文:

       如今有不少开发者选择学习GO语言,GO在近几年来确实发展的不错,市场需求量也在慢慢增长,虽然远不及Java这些主流语言,但学会GO语言却是我们面试中的一个加分项,你知道GO语言中的垃圾回收机制吗?本文主要介绍下垃圾回收机制的概念,具体请看下文:

Golang垃圾回收

       什么是垃圾回收?

       全称Garbage Collection,故缩写为GC,在计算机科学中是一种自动的存储器管理机制,当一个计算机上的动态存储器不再需要时,就应该予以释放,以让出存储器,这种存储器资源管理,称为垃圾回收。垃圾回收器可以让程序员减轻许多负担,也减少程序员犯错的机会。

      简单来说,GC在后台运行一个守护线程,作用是在监控各个对象的状态,识别并丢弃不再使用的对象来释放和重用资源。

      GO的垃圾回收机制是三色标记发配合写屏障和辅助GC,三色标记是标记-清除法的一种增强版本。

      原始的标记清除法分为两个步骤:1、标记。先STP(Stop The World),暂停整个程序的全部运行线程,将被引用的对象打上标记;2、清除没有被打标机的对象,即回收内存资源,然后恢复运行线程。

       三色标记法是对标记阶段的改进:1、初始状态所有对象都是白;2、从root出发扫描所有根对象,将他们引用的对象标记为灰色。

       GC的触发条件是怎样的?

       1、超过内存大小阈值。

       2、达到定时时间,阈值由gcpercent的变量控制的,当新分配的内存占已使用内存的比例超过gcprecent时就会触发,比如一次回收完毕后,内存的使用量为10M,那下次回收的时机是内存分配达到15M的时候,也就是说,并不是内存分配越多,垃圾回收频率就越高。

       如果一直达不到内存大小的阈值呢?这个时候GC就会被定时时间触发,比如一直达不到15M,那就定时,默认为2分钟触发一次,触发一次GC保证资源的回收。

       老男孩GO开发课程可以试听吗?当然可以,老男孩Go开发课程2021全面升级(周末班), 试听即送价值69元纸质教材一本。我们在北京、上海均设有分校,同时也有脱产班、网络班、周末班三种班型供大家选择, 学习内容都是一样的,唯一不同的只是学习周期的长短~

       推荐阅读:

       为什么要学习GO语言?老男孩GO培训

       GO语言中,什么情况下该使用指针?老男孩GO语言课程怎么样

       Go语言错误总结(一)!老男孩GO语言学习周期

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