5
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

【夏休み企画】#IT用語一問一答【毎朝投稿3日目】GC

5
Posted at

この記事を読むと、、

  • 「関連用語」を使って「GC」を説明できるようになる
  • 「GC」がもっと好きになる(多分)

関連用語

memory leak / dangling pointer / stop-the-world GC / incremental GC / concurrent GC

[復習用] 記事の内容を見る前に上記の言葉でGCを説明してみよう!

企画説明

  • クラウドって何?って人に聞かれて説明してるけど俺もよく知らないや、、
  • ドキュメント読んでみてるけど半分くらい何言ってるか分かんない、、
  • 今日の夕飯はナスの炒めものにしよっかな〜、あれ、NASってなんだっけ?

みたいなことが結構あったので、知ったかしていたIT用語を毎日一個ずつちゃんと学んでいこうっていう企画です!

昨日の記事はこちら↓

GCとは

GC = Garbage Collection = プログラムが割当て、不要になったメモリ領域を自動で解放してくれる仕組み

  • Lispにおけるメモリ管理を簡単にするために開発された
  • 多くの高級言語では標準で実装されている
  • C/C++ではライブラリを通してGCが使える

GCのおかげで以下のバグを回避できたりする

  • memory leak = オブジェクトが存在するが、それを指すポインタがない状態
    • ただし、GCがあってもポインタを保持し続けるコードを書けばmemory leakしてしまう
    • メモリ不足の原因になる
  • dangling pointer = 解放済みのオブジェクトを指すポインタ
    • dangling pointerがデリファレンスされた場合、意図しない挙動をしてしまう
  • double free bug = 解放済みのメモリ領域を再度解放しようとすること

※GCには様々な実装方法があるけど、以下は最も一般的なtracing GCの話です

GCをするタイミングには以下のパターンがある

  • stop-the-world GC = GC中にアプリケーションスレッドを完全に停止する方法
    • オブジェクトの新規割当てや解放が起きないため安全
    • heap全体のGC = full GCの際にアプリケーションがしばらく応答しない時間が発生する
    • 非対話形式のプログラムに向いている
  • incremental GC = GCを複数回に分けて実行する方法
    • 全体で見ればstop-the-world GCよりも時間がかかる
  • concurrent GC = アプリケーションスレッドと並行してGCを実行する方法
    • GCスレッドを同時に動作させる分、スループットが低下する
    • プログラムの実行を止めない

【おまけ】調べている時にでてきたなにこれ用語

  • heap memory = プログラム実行時に動的に確保可能なメモリ領域
  • throughput = 単位時間あたりの処理能力

参考資料

5
1
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
5
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?