インフラ・ストリーミングチーム インターンの八谷です。 本記事では、ガベージコレクション(GC)への負荷を低減することを目的として、Go言語でのメモリ確保時にOSから直接mmap領域を確保する手法と、make関数でランタイムから領域を確保する場合でのGC負荷などの比較を行います。結果としては、mmap領域を直接確保することでGCが走査するオブジェクト数を削減でき、それに伴ってアプリケーションの停止(Stop-The-World)時間を短縮できることがわかりました。 前提知識1: Goにおけるメモリ管理 Goのランタイムでは、起動時や必要に応じてOSから64MB単位の領域をあらかじめ確保し、それを管理しています。Goでメモリ領域の確保を行う際、一般的にはmakeやnew関数、&T{}といった表現を用いますが、この時にはランタイムの管理下の領域から必要なサイズが切り出され、アプリケーションに割

