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