「ガベージコレクション」の版間の差分
Administrator (トーク | 投稿記録) 編集の要約なし |
|||
| (3人の利用者による、間の3版が非表示) | |||
| 1行目: | 1行目: | ||
'''ガベージコレクション''' | '''ガベージコレクション'''([[英語]]:garbage collection、略称:[[GC]])とは、[[プログラム]]で動的に確保したメモリ領域のうち、不要になったものを自動的に解放する機構のことである。 | ||
== 概要 == | == 概要 == | ||
| 21行目: | 21行目: | ||
また、ガベージコレクションの処理が重すぎる「[[ストップ・ザ・ワールド]]」なる現象も問題となることが多い。ゴミ収集が回ってきた(動いた)瞬間に[[コンピューター]]が超高負荷になり、まるで[[フリーズ]]したかのような状態になり、処理が終わると何事もなかったかのように動き出す、というものである。 | また、ガベージコレクションの処理が重すぎる「[[ストップ・ザ・ワールド]]」なる現象も問題となることが多い。ゴミ収集が回ってきた(動いた)瞬間に[[コンピューター]]が超高負荷になり、まるで[[フリーズ]]したかのような状態になり、処理が終わると何事もなかったかのように動き出す、というものである。 | ||
この[[ストップ・ザ・ワールド]]なる現象は、24時間365日止まってはいけない[[サーバー]] | この[[ストップ・ザ・ワールド]]なる現象は、24時間365日止まってはいけない[[サーバー]]などで突如数十秒間の一時停止が発生し問題になることが多い。巨大なサーバーほどアホみたいに大量の[[メインメモリ]]を搭載している傾向があり、それに比例してガベージコレクションによる回収にも時間がかかる。 | ||
最近では[[ストップ・ザ・ワールド]]を回避する新しい方式も登場してきている。 | 最近では[[ストップ・ザ・ワールド]]を回避する新しい方式も登場してきている。 | ||
| 36行目: | 36行目: | ||
:[[マークアンドスイープ]]と[[コピーGC]]のハイブリッド方式。[[メモリ]]が使われ始めてからの経過時間や、確保されたメモリサイズなどでグループを分け(このグループを「世代」という)、それぞれに異なるGC方式を適用するというもの。 | :[[マークアンドスイープ]]と[[コピーGC]]のハイブリッド方式。[[メモリ]]が使われ始めてからの経過時間や、確保されたメモリサイズなどでグループを分け(このグループを「世代」という)、それぞれに異なるGC方式を適用するというもの。 | ||
== 主なガベージコレクション実装 == | |||
{{stub}} | {{stub}} | ||
== | ==その他== | ||
[[MonoMac]]では[[メインスレッド]]以外からSystem.GC.Collect()を呼び出しても効果がない。 | |||
必ずメインスレッドで実行する必要がある。 | |||
== 関連項目 == | == 関連項目 == | ||
| 47行目: | 49行目: | ||
{{reflist}} | {{reflist}} | ||
[[category: ガベージコレクション]] | |||