MENU

【Java Silver 試験】参照型の宣言とインスタンス化とガベージコレクションの理解

参照型とインスタンス化、それに関連するガベージコレクションについて理解を深めるための問題です。

問題

次のプログラムを実行した場合、最終的にヒープメモリに存在しない可能性のあるオブジェクトを選んでください。

            
                class Animal {
                    String name;

                    Animal(String name) {
                        this.name = name;
                    }
                }

                public class Main {
                    public static void main(String[] args) {
                        Animal tiger = new Animal("Tiger");
                        Animal lion = new Animal("Lion");
                        tiger = lion;
                        lion = null;
                        // Point A
                    }
                }
            
        

選択肢

  • A. Tiger
  • B. Lion
  • C. 両方ともヒープメモリに存在する
  • D. どちらもヒープメモリに存在しない

答えと解説

回答を見る

答え

A. Tiger

解説

解説のポイント:

  • 参照型とインスタンス化の仕組み理解
  • ガベージコレクションの動作

プログラムでは、まずAnimalクラスのインスタンスを2つ作成しています。一つは”tiger”、もう一つは”lion”です。

次にtigerの参照をlionの参照に置き換えています。この時点で、もともとtigerが指していた”Tiger”というインスタンスは他に参照されていないため、ガベージコレクションの対象になります。

その後、lion変数にnullを代入することで、”Lion”というインスタンスも他に参照されなくなり、こちらもガベージコレクションの対象となります。

最終的なプログラム内でガベージコレクションされるまで、”Tiger”のオブジェクトはヒープメモリに残っていません。

目次