「ガベージコレクション」の版間の差分

編集の要約なし
 
(3人の利用者による、間の3版が非表示)
1行目: 1行目:
'''ガベージコレクション'''(英語:garbage collection、略称:[[GC]])とは、[[プログラム]]で動的に確保したメモリ領域のうち、不要になったものを自動的に解放する機構のことである。
'''ガベージコレクション'''([[英語]]:garbage collection、略称:[[GC]])とは、[[プログラム]]で動的に確保したメモリ領域のうち、不要になったものを自動的に解放する機構のことである。


== 概要 ==
== 概要 ==
21行目: 21行目:
また、ガベージコレクションの処理が重すぎる「[[ストップ・ザ・ワールド]]」なる現象も問題となることが多い。ゴミ収集が回ってきた(動いた)瞬間に[[コンピューター]]が超高負荷になり、まるで[[フリーズ]]したかのような状態になり、処理が終わると何事もなかったかのように動き出す、というものである。
また、ガベージコレクションの処理が重すぎる「[[ストップ・ザ・ワールド]]」なる現象も問題となることが多い。ゴミ収集が回ってきた(動いた)瞬間に[[コンピューター]]が超高負荷になり、まるで[[フリーズ]]したかのような状態になり、処理が終わると何事もなかったかのように動き出す、というものである。


この[[ストップ・ザ・ワールド]]なる現象は、24時間365日止まってはいけない[[サーバー]]などで突如数十秒間の一時停止が発生し、問題になることが多い。
この[[ストップ・ザ・ワールド]]なる現象は、24時間365日止まってはいけない[[サーバー]]などで突如数十秒間の一時停止が発生し問題になることが多い。巨大なサーバーほどアホみたいに大量の[[メインメモリ]]を搭載している傾向があり、それに比例してガベージコレクションによる回収にも時間がかかる。


最近では[[ストップ・ザ・ワールド]]を回避する新しい方式も登場してきている。
最近では[[ストップ・ザ・ワールド]]を回避する新しい方式も登場してきている。
36行目: 36行目:
:[[マークアンドスイープ]]と[[コピーGC]]のハイブリッド方式。[[メモリ]]が使われ始めてからの経過時間や、確保されたメモリサイズなどでグループを分け(このグループを「世代」という)、それぞれに異なるGC方式を適用するというもの。
:[[マークアンドスイープ]]と[[コピーGC]]のハイブリッド方式。[[メモリ]]が使われ始めてからの経過時間や、確保されたメモリサイズなどでグループを分け(このグループを「世代」という)、それぞれに異なるGC方式を適用するというもの。


== 主なガベージコレクション実装 ==
{{stub}}
{{stub}}


== 主なガベージコレクション実装 ==
==その他==
{{stub}}
[[MonoMac]]では[[メインスレッド]]以外からSystem.GC.Collect()を呼び出しても効果がない。
必ずメインスレッドで実行する必要がある。


== 関連項目 ==
== 関連項目 ==
47行目: 49行目:
{{reflist}}
{{reflist}}


{{stub}}
[[category: ガベージコレクション]]