1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

初めに

ガーベージコレクション(GC)についてまとめた。

そもそもGCとは?

プログラムが使わなくなったメモリを自動で解放するもの。
プログラミング言語の言語機能に組み込まれている場合や、外部ライブラリによって提供される場合などがある。
参照カウント、マーク&スイープなどの方式がある。

GCの利点

メモリ管理の容易さ

開発者自身がメモリ解放を行う必要がなく、メモリリークや二重解放を避けられる。

自動最適化

実装側がヒープ構造や割り当てパターンに基づいて最適化できる。

GCの欠点

遅延

GCを行う際には処理が停止することがある。

処理

GCがCPU、メモリを消費するため、純粋な計算スループットが低下する。
また、余分なヒープ領域を必要とし、全体的なメモリの使用量が増える。

制御困難性

いつメモリが解放されるかをアプリ側が正確に制御しずらく、解放のタイミングが不定になる。


GCは安全性、生産性を向上させる一方、遅延やメモリ消費量の増加を発生させる。

Rustとの違い

GC言語はランタイムがタイミングを判断するが、Rustはコンパイル時、スコープ終了時に自動で破棄される。

また、Rustは所有権という仕組みを採用している。
これはメモリの所有者が1つであることを約束するものである。
加えてRustは借用ルールを強制しており、解放後のメモリアクセスやデータ競合を防ぐことができる。

これらによりRusthはGC のような停止時間がないためリアルタイム性に優れるメモリ管理を実現している。

終わりに

Rust勉強しないと。
~Thank you for reading~

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?