こんにちは。マイクロアドで機械学習エンジニアをしている大庭です。 今回の記事では多くのプログラミング言語で採用されているメモリ管理機能である「ガベージコレクション」とRustで導入され現在注目されている「所有権」について、最近調べる機会があったため備忘録を兼ねてまとめてみようと思います。 スタック領域とヒープ領域 スタック領域 ヒープ領域 ヒープ領域の管理方法 ガベージコレクション 参照カウント マーク・アンド・スイープ コピーGC 世代別ガーベージコレクション 所有権 所有権の原則 スコープによる値の解放 所有権の移動 所有権の弊害 参照と借用 可変な参照 所有権のまとめ おわりに スタック領域とヒープ領域 プログラムが利用するメモリはおおよそ以下の4つの領域に分けられます。 テキスト領域:機械語に翻訳されたプログラムを保存する領域 静的領域:グローバル変数やstatic 変数など実行中