「ストップ・ザ・ワールド」の版間の差分
(→概要) |
Administrator (トーク | 投稿記録) (→サーバー) |
||
(3人の利用者による、間の4版が非表示) | |||
1行目: | 1行目: | ||
− | '''ストップ・ザ・ワールド'''([[英語]]:stop the world)とは、[[ガベージコレクション]]を搭載した[[プログラミング言語]]や[[実行環境]]において、[[ガベージコレクション]]発動時に[[プログラム]]が[[フリーズ]]したかのような状態になる現象のことである。[[ガベージコレクション]]が終わると何事も無かったかのように[[プログラム]]は動きだす。 | + | '''ストップ・ザ・ワールド'''([[英語]]:stop the world)とは、[[ガベージコレクション]]を搭載した[[プログラミング言語]]や[[実行環境]]において、[[ガベージコレクション]]発動時に[[プログラム]]や[[パソコン]]が[[フリーズ]]したかのような状態になる現象のことである。 |
+ | |||
+ | [[ガベージコレクション]]が終わると何事も無かったかのように[[プログラム]]は動きだす。 | ||
+ | |||
+ | オレの能力は「5秒間」だけ時を止められる……… | ||
+ | そして動き出す | ||
==概要== | ==概要== | ||
ストップ・ザ・ワールドは、[[ガベージコレクション]]の[[アルゴリズム]]の多くが、自動かつ漏れなく[[メモリ]]を解放するためには[[メインスレッド]]を停止した状態で実行する必要がある、ということが原因で発生する。 | ストップ・ザ・ワールドは、[[ガベージコレクション]]の[[アルゴリズム]]の多くが、自動かつ漏れなく[[メモリ]]を解放するためには[[メインスレッド]]を停止した状態で実行する必要がある、ということが原因で発生する。 | ||
− | + | ===パソコン=== | |
+ | [[8ビットパソコン]]の時代に一世風靡した[[MS-BASIC]]系では1分以上もザラであり時には5分以上のストップ・ザ・ワールドも珍しくなかったが、最近ではそこまで凄いのは稀である。 | ||
+ | |||
+ | ===サーバー=== | ||
+ | ストップ・ザ・ワールドは運用中の[[サーバー]]で発生すると[[監視室]]はパニック状態になる。 | ||
+ | とくに[[冗長構成]]を完璧に組んだ[[サーバー]]群では数十秒の停止でも[[フェイルオーバークラスター]]が発動したりと一大事に発展することも多い。 | ||
− | [[ | + | [[ハードディスク]]の[[デフラグ]]の時間が大容量なほど長時間になるのと同様に、ガーベジコレクションによるストップ・ザ・ワールドの停止時間も基本的に[[メモリ]]の搭載量に比例する。 |
+ | |||
+ | 一般的に[[Java]]で書かれた[[プログラム]]を動かすサーバーはアホみたいに[[メモリ]]をモリモリ積んでいる傾向があるが、その大量の[[メモリ]]を食い尽くすまでに長い時間がかかり、忘れた頃に一気に[[ガベージコレクション]]が発動することで、とてつもない長時間のストップ・ザ・ワールドが発生するケースが多い。 | ||
+ | |||
+ | 一方、[[ITドカタ]]に配給されるショボい[[スペック]]の[[PC]]、いわゆる[[社畜PC]]での開発時点ではメモリ不足により頻繁かつ小規模なガベージコレクションが行われるため問題発覚しないことが多い。[[単体テスト]]や[[結合テスト]]はやっても長時間の[[耐久テスト]]はしないことが多いのも問題の原因だ。 | ||
+ | |||
+ | ===SSD=== | ||
+ | また、[[プログラミング]]だけではなく、近年[[ストレージ]]として広く普及した[[SSD]]においても未使用領域を確保するために[[ガベージコレクション]]が行われているが、書込み処理が集中し[[ガベージコレクション]]が追いつかなくなるとストップ・ザ・ワールドのような状態に陥る。これを[[プチフリ]]という。近代的な[[SSD]]では[[プチフリ]]を抑制するために[[オーバープロビジョニング領域]]を搭載している製品が多い。 | ||
==関連項目== | ==関連項目== | ||
+ | |||
*[[ガベージコレクション]] | *[[ガベージコレクション]] | ||
2019年12月3日 (火) 06:48時点における最新版
ストップ・ザ・ワールド(英語:stop the world)とは、ガベージコレクションを搭載したプログラミング言語や実行環境において、ガベージコレクション発動時にプログラムやパソコンがフリーズしたかのような状態になる現象のことである。
ガベージコレクションが終わると何事も無かったかのようにプログラムは動きだす。
オレの能力は「5秒間」だけ時を止められる……… そして動き出す
概要[編集 | ソースを編集]
ストップ・ザ・ワールドは、ガベージコレクションのアルゴリズムの多くが、自動かつ漏れなくメモリを解放するためにはメインスレッドを停止した状態で実行する必要がある、ということが原因で発生する。
パソコン[編集 | ソースを編集]
8ビットパソコンの時代に一世風靡したMS-BASIC系では1分以上もザラであり時には5分以上のストップ・ザ・ワールドも珍しくなかったが、最近ではそこまで凄いのは稀である。
サーバー[編集 | ソースを編集]
ストップ・ザ・ワールドは運用中のサーバーで発生すると監視室はパニック状態になる。 とくに冗長構成を完璧に組んだサーバー群では数十秒の停止でもフェイルオーバークラスターが発動したりと一大事に発展することも多い。
ハードディスクのデフラグの時間が大容量なほど長時間になるのと同様に、ガーベジコレクションによるストップ・ザ・ワールドの停止時間も基本的にメモリの搭載量に比例する。
一般的にJavaで書かれたプログラムを動かすサーバーはアホみたいにメモリをモリモリ積んでいる傾向があるが、その大量のメモリを食い尽くすまでに長い時間がかかり、忘れた頃に一気にガベージコレクションが発動することで、とてつもない長時間のストップ・ザ・ワールドが発生するケースが多い。
一方、ITドカタに配給されるショボいスペックのPC、いわゆる社畜PCでの開発時点ではメモリ不足により頻繁かつ小規模なガベージコレクションが行われるため問題発覚しないことが多い。単体テストや結合テストはやっても長時間の耐久テストはしないことが多いのも問題の原因だ。
SSD[編集 | ソースを編集]
また、プログラミングだけではなく、近年ストレージとして広く普及したSSDにおいても未使用領域を確保するためにガベージコレクションが行われているが、書込み処理が集中しガベージコレクションが追いつかなくなるとストップ・ザ・ワールドのような状態に陥る。これをプチフリという。近代的なSSDではプチフリを抑制するためにオーバープロビジョニング領域を搭載している製品が多い。