Haruki Okada
2018-08-07LINE Engineer
この記事はLINE Engineering Blog「夏休みの自由研究 -Summer Homework-」の6日目の記事です。
こんにちは、LINE Ads Platformの開発をしている岡田(@ocadaruma)です。
今回、個人的に以前から気になっていたGo言語のGCについて、この機会に調べましたので紹介いたします。
Go言語
Go言語はGoogleによって開発されたシステムプログラミング言語で、Channelを利用した並行性のサポートやGCを備えていることが特徴です。
Googleをはじめとして多くの企業が使用しており、LINE社内にもGoで開発しているツールやサービスが多数あります。
Go言語のGC
素朴な感覚で言えば、Go言語では低レイテンシなアプリケーションを容易に開発できるいっぽう、GCは他のランタイムと比較してシンプルに見えます。
たとえば、Go 1.10の時点で、Go言語のGCはConcurrent Mark & Sweep(以下CMS)コレクタであり、JVMなどで一般的なコンパクションや世代別GCは行いません。
mgc.go
It is a conc