JavaA2Z

KAB-studio > プログラミング > JavaA2Z > ガベージコレクションとは

ガベージコレクション

日本語 ゴミ拾い
英語 garbage collection
ふりがな がべーじこれくしょん
フリガナ ガベージコレクション

解説

インスタンスを削除するシステム。
インスタンスは、参照変数プリミティブ型変数と異なり、寿命で消えることはない。逆に言うと、一度作ったインスタンスを、明示的に消去することはできない。
このインスタンスを消去するのが「ガベージコレクション」である。
 
ガベージコレクションでは、「ガベージコレクタ」が定期的に全インスタンスをチェックし、インスタンスが「どの参照変数からも参照されていない」場合にはインスタンスを削除する。
このシステムにより、C++言語等であった「インスタンスを削除し忘れる」「削除済みインスタンスを使用してエラーになる」といった問題が回避される。
反面、インスタンスがいつ削除されるか分からないため、インスタンスの作成を大量にう場合にメモリを圧迫し、パフォーマンス的に問題になったり、場合によっては異常終了する場合もある。
参照変数nullをセットすることでガベージコレクションされやすくなる、と言われているが、必ずわれるとは言えず、工数の増加やバグが発生する可能性も無視できないため、過信しない方がいいだろう。
 
ちなみに「ガベージコレクション」というカタカナは実際の発音とはかなり異なる。だが、Javaが登場した頃の初期のドキュメントで「ガベージコレクション」と訳されていたためこの用語が定着してしまった。
後に「正しい発音にしよう」ということになり「ガーベジコレクション」「ガーベッジコレクション」「ガーベージコレクション」といったカタカナも生まれているが、今のところはまだ「ガベージコレクション」の方が一般的である。

参考サイト

  • (参考サイトはありません)

(KAB-studioからのおしらせです)

サンプルプログラム(とか)サンプルを別ウィンドウで表示サンプルをクリップボードへコピー(WindowsでIEの場合のみ)

// Sample.java
public class Sample
{
    public static void main( String[] args )
    {
        Sample sample = new Sample();
        sample.createInstance();
        sample.createInstanceAndSetNull();
    }

    /**
    *   インスタンスを作るメソッド。
    */
    private void createInstance()
    {
        // Stringクラスを作ります。
        String string = new String( "あいうえお" );
        // たとえば、こうして作られたStringクラスのインスタンスは、
        // このメソッドを抜けても無くなりません。
        // このメソッドを抜けるとstringはスコープから外れるので
        // 無くなりますが、この変数がなくなっても参照が無くなるだけで
        // インスタンスそのものはなくなりません。
        // インスタンスが無くなるのはガベージコレクタが
        // 削除するまでです。
    }

    /**
    *   インスタンスを作ってnullをセットするメソッド。
    */
    private void createInstanceAndSetNull()
    {
        // Stringクラスを作ります。
        String string = new String( "あいうえお" );
        // stringにnullをセットします。
        string = null;
        // これをすると、明示的に
        // 「インスタンスはどの変数からも参照されなくなった」
        // ことになるため、ガベージコレクタが削除しやすくなる、と
        // 言われています。ただし、これは「おまじない」レベルなので
        // 過信はできません。
    }
}
// Sample.java
public class Sample
{
    public static void main( String[] args )
    {
        Sample sample = new Sample();
        sample.createInstance();
        sample.createInstanceAndSetNull();
    }

    /**
    *   インスタンスを作るメソッド。
    */
    private void createInstance()
    {
        // Stringクラスを作ります。
        String string = new String( "あいうえお" );
        // たとえば、こうして作られたStringクラスのインスタンスは、
        // このメソッドを抜けても無くなりません。
        // このメソッドを抜けるとstringはスコープから外れるので
        // 無くなりますが、この変数がなくなっても参照が無くなるだけで
        // インスタンスそのものはなくなりません。
        // インスタンスが無くなるのはガベージコレクタが
        // 削除するまでです。
    }

    /**
    *   インスタンスを作ってnullをセットするメソッド。
    */
    private void createInstanceAndSetNull()
    {
        // Stringクラスを作ります。
        String string = new String( "あいうえお" );
        // stringにnullをセットします。
        string = null;
        // これをすると、明示的に
        // 「インスタンスはどの変数からも参照されなくなった」
        // ことになるため、ガベージコレクタが削除しやすくなる、と
        // 言われています。ただし、これは「おまじない」レベルなので
        // 過信はできません。
    }
}

この単語を含むページ

「みだし」に含まれているページ

「サンプルプログラムとか」に含まれているページ

はてなブックマーク 詳細を表示 はてなブックマーク ブックマーク数
livedoorクリップ 詳細を表示 livedoorクリップ ブックマーク数
Yahoo!ブックマーク 詳細を表示 users
del.icio.us 登録する RSSに登録
サンプルを別ウィンドウで表示
サンプルをクリップボードへコピー(WindowsでIEの場合のみ)
update:2005/04/13
このページは、Javaプログラミング言語についての用語を網羅した辞書「JavaA2Z」の一ページです。
詳しくは「JavaA2Z」表紙の説明をご覧ください。