JavaA2Z

KAB-studio > プログラミング > JavaA2Z > 寿命とは

寿命

日本語 寿命
英語 lifetime
ふりがな じゅみょう
フリガナ ジュミョウ

解説

変数インスタンス等が存在しているその「期間」。
変数インスタンスは、永遠に存在していると、プログラムを終了させない限りメモリを使用し続けることになってしまう。そこに新たな変数インスタンスが作られたら、メモリが枯渇してしまう。
そこで、変数インスタンスには「寿命」が存在し、プログラムの実中に消えることとなる。
 
変数の場合、スコープから外れることで寿命となり、消える。
消えた変数にはアクセスできず、格納された値も消える。
 
インスタンスの場合、ガベージコレクションが削除しない限り寿命は来ない。
インスタンス参照を格納する参照変数が、スコープから外れて寿命が来ても、参照先のインスタンスはそのまま残り、ガベージコレクションが削除しない限り残る。
もし、インスタンスが「参照変数の削除と共に寿命が来て消える」ことになってしまうと、インスタンスが複数の参照変数から参照されていた場合、他の参照変数も使えなくなってしまう。
こういった問題を避けるため、インスタンス参照変数の寿命とは無関係となっている。

参考サイト

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

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

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

// Sample.java
public class Sample
{
    public static void main( String[] args )
    {
        {
            // 変数は、ブロックの外に出ると
            // (つまりスコープから外れると)
            // なくなります。
            int i = 100;
            System.out.println( i );
            // 100
        }

        // i = 200;
        // コンパイルエラー:
        // i は解決できません。

        // つまり、iの寿命は上記のブロックの
        // 中だけで、ブロックの外に出たら
        // 寿命が尽きて消えてしまった、という
        // わけです。

        // 取っておくための参照。
        Integer integerBackup = null;

        {
            // クラスの場合、参照型変数は
            // なくなりますが、参照している
            // インスタンスはなくなりません。
            Integer integer = new Integer( 200 );
            System.out.println( integer );
            // 100

            // 参照を「バックアップ」しておきます。
            integerBackup = integer;
        }

        // integer = null;
        // コンパイルエラー:
        // integer は解決できません。

        // この場合、寿命が尽きて消えたのは
        // integer変数であって、そのinteger変数が
        // 指し示していたIntegerクラスのインスタンスは
        // なくなってません。ガベージコレクションが
        // 削除するまでは寿命は尽きません。
        // integerBackupにはそのインスタンスの参照が
        // 入っているので、この参照からアクセスできます。
        System.out.println( integerBackup );
        // 200

        // 逆に言うと、もし参照型変数の寿命が来ることで
        // インスタンスも消えてしまうと、integerBackupの
        // 中に入っている参照の指し示すインスタンスも
        // 消えてしまうことになるため、いつの間にか
        // integerBackupは使えなくなってしまいます。
        // 他の言語、たとえばC言語やC++言語では
        // こういう事があり得るため、それを避けるために
        // Javaではガベージコレクションが削除する、
        // というシステムになっています。
    }
}
// Sample.java
public class Sample
{
    public static void main( String[] args )
    {
        {
            // 変数は、ブロックの外に出ると
            // (つまりスコープから外れると)
            // なくなります。
            int i = 100;
            System.out.println( i );
            // 100
        }

        // i = 200;
        // コンパイルエラー:
        // i は解決できません。

        // つまり、iの寿命は上記のブロックの
        // 中だけで、ブロックの外に出たら
        // 寿命が尽きて消えてしまった、という
        // わけです。

        // 取っておくための参照。
        Integer integerBackup = null;

        {
            // クラスの場合、参照型変数は
            // なくなりますが、参照している
            // インスタンスはなくなりません。
            Integer integer = new Integer( 200 );
            System.out.println( integer );
            // 100

            // 参照を「バックアップ」しておきます。
            integerBackup = integer;
        }

        // integer = null;
        // コンパイルエラー:
        // integer は解決できません。

        // この場合、寿命が尽きて消えたのは
        // integer変数であって、そのinteger変数が
        // 指し示していたIntegerクラスのインスタンスは
        // なくなってません。ガベージコレクションが
        // 削除するまでは寿命は尽きません。
        // integerBackupにはそのインスタンスの参照が
        // 入っているので、この参照からアクセスできます。
        System.out.println( integerBackup );
        // 200

        // 逆に言うと、もし参照型変数の寿命が来ることで
        // インスタンスも消えてしまうと、integerBackupの
        // 中に入っている参照の指し示すインスタンスも
        // 消えてしまうことになるため、いつの間にか
        // integerBackupは使えなくなってしまいます。
        // 他の言語、たとえばC言語やC++言語では
        // こういう事があり得るため、それを避けるために
        // Javaではガベージコレクションが削除する、
        // というシステムになっています。
    }
}

この単語を含むページ

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

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

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