ICDロゴ

ガーベジ・コレクション (garbage collection)

別名
GC (Garbage Collection) 【ジー・シー】

最終更新日: 2001/06/22

 プログラムの実行中に使用されなくなったメモリを自動的に見つけ出し、再利用できるようにするための機構。通常、ガーベジ・コレクションの機能はランタイム・エンジンやライブラリにより実装される。省略して単に「GC」と呼ばれることもある。

 ガーベジ・コレクションの機能を持たないC言語やC++言語では、プログラマが必要に応じてメモリ領域の確保を行い、一連の処理を終えた後、不要になったメモリ領域を明示的に解放する。しかしこのようなメモリの解放処理は、しばしば忘れられ、未使用であるにもかかわらず、解放されないメモリ領域を作り出しやすい。この種のバグはメモリ・リーク(memory leak、「leak」は「漏れ」という意味)と呼ばれ、プログラムが実行されてからある程度時間が経たないと発見されにくい、たちの悪いバグである。また、すでに解放されているにもかかわらず、そのメモリ領域にアクセスしてしまうようなバグもよくある。

 JavaやC#などの新しい言語処理系では、このようなバグをなくし、メモリ管理を単純化するために、ガーベジ・コレクションが言語処理系の機能として導入された。これによりプログラマは、確保したメモリ領域を自身で明示的に解放する必要がなくなった。同時に、これらの言語では、物理的なメモリ・アドレスを指すポインタの使用が言語仕様から削除され、代わりにメモリ領域への「参照」によりメモリへのアクセスを行う(C#では明示的にガーベジ・コレクションを回避し、物理メモリへアクセスする方法も残されている)。

 ガーベジ・コレクションの機能を備える処理系では、アドレス空間内の連続領域がメモリ割り当てのためにヒープ・メモリ(heap memory)として管理される。プログラムからnew演算子などによりメモリ領域が要求されると、このヒープ・メモリの一部が割り当てられる(このヒープ・メモリの一領域を指す識別子が参照である)。このような割り当てを繰り返しているとヒープ・メモリはやがて尽きてしまうが、ヒープ・メモリの中にはもうプログラムからは使用されていない、つまりコード中のどこからも参照されていない領域が「ガーベジ」(ゴミという意味)として存在している可能性がある。このような領域を集め、連続した空き領域を作り出す処理が「ガーベジ・コレクション」(ゴミ集めという意味)である。ガーベジ・コレクションの処理においては、システムに負荷をかけたりプログラムの実行を中断したりせずに、いかにしてヒープ・メモリ内の参照されていないメモリ領域を探し出すかが非常に重要なポイントとなる。

Copyright (C) 2000-2007 Digital Advantage Corp.

アイティメディアの提供サービス

キャリアアップ

鬩搾スオ�ス�イ鬮」髮�スセ螽ッ蜃ー鬩幢ス「隴趣ス「�ス�ス�ス�ウ鬩幢ス「�ス�ァ�ス�ス�ス�ク鬩幢ス「隴乗��ス�ケ隴擾スエ�ス讓」蟇ー陟托スア�ス�ス�ソ�ス�ス�コ�ス�ス�ス�コ鬮ォ�イ�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ア鬩搾スオ�ス�イ驕カ荵怜款�ス�ス�ス�「髫イ�、隲幢スキ�ス�ス鬮」蛹�スス�ウ�ス�ス�ス�ュ�ス�ス�ス�ス驕カ荳橸ソス莉ーツ€髣比シ夲スス�」�ス�ス隶捺慣�ス�ク�ス�コ�ス�ス�ス�セ鬩搾スオ�ス�コ髯キ�キ�ス�カ�ス�ス�ス�ス陜ィ�ヲ�ス�ス�ス�ア鬯ッ�ッ闔ィ諛カ�ス�セ鬲�シ夲スス�ソ�ス�ス鬯ョ�エ�ス�ス�ス�ス�ス�「鬯ョ�「�ス�ィ�ス�ス�ス�キ鬮ォ�イ�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ア鬩幢ス「�ス�ァ髯句ケ「�ス�オ驛「譎「�ス�。鬩幢ス「�ス�ァ�ス�ス�ス�ァ鬩幢ス「隴趣ス「�ス�ソ�ス�ス驍オ�コ�ス�ス
�ス�ス�ス�ス髫イ蟷�か�ス�ス�ス�エ�ス�ス�ス�セ鬯ッ�ゥ陋ケ�ス�ス�ス�ス�」鬩幢ス「隴趣ス「�ス�ス�ス�サ鬩幢ス「隴趣ソス�ス�シ鬩・�ス繽搾ソス�ケ隴趣ス「�ス�ス�ス�シ鬩搾スオ�ス�コ�ス�ス�ス�ァ鬮ッ�キ陝カ譏懶スコ繧托スソ�ス�ス�・鬩幢ス「隴趣ス「�ス�ス�ス�。鬩幢ス「隴趣ス「�ス�ス�ス�ェ鬩幢ス「隴趣ス「�ス�ソ�ス�ス驛「譎「�ス�ィ鬩搾スオ�ス�コ�ス�ス�ス�ィ鬩搾スオ�ス�コ�ス�ス�ス�ッ�ス�ス�ス�ス髮狗ソォ�托ソス�ス�ス�シ髫カ轣假ス・�ス�ス�ス�ス�エ�ス�ス�ス�セ鬯ッ�ゥ陋ケ�ス�ス�ス�ス�」鬩幢ス「隴趣ス「�ス�ス�ス�サ鬮ォ�カ鬲�シ夲スス�ス�ス�ュ鬮ッ�キ隶惹シ∝ョ�ソス�ス�ス�ァ鬩募争豎夲ソス�ス�ス�ィ髯キ莨夲スス�ア驍オ�イ陞ウ螢ス窶ウ鬯ョ�ヲ�ス�ェ�ス�ス�ス�・鬩幢ス「�ス�ァ�ス�ス�ス�ィ鬩幢ス「隴趣ス「�ス�ス�ス�ウ鬩幢ス「�ス�ァ�ス�ス�ス�ク鬩幢ス「隴乗��ス�ケ隴擾スエ�ス讓」縺暦ソス�コ�ス�ス�ス�ョ鬩搾スオ�ス�コ鬯ョ�ョ�ス�ス�ス�ス�ス�ス�ス�ス�ス�ケ鬯ゥ蛹�スス�カ髣包スオ隴擾スカ髦。鬥エ蝮ソ�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ア