Javaのガーベッジコレクションについて

このQ&Aのポイント
  • Javaのガーベッジコレクションについて教えてください。
  • プログラムの中でガーベッジコレクションの対象になるのは、anaによって参照されたオブジェクトのみですか?
  • Javaのプログラムでガーベッジコレクションの動作を理解したいです。
回答を見る
  • ベストアンサー

Javaについて教えてください!

class Analog{ Digital digital; public Analog(){digital = new Digital(this);} } class Digital{ Analog analog; public Digital(Analog a){analog = s;} } public static void main(String[] args){ Analog ana = new Analog(); ana = null; .... } このようなプログラムの場合ガーベッジコレクションの対象になるのは、anaによって参照されたオブジェクトのみでいいのでしょうか?

  • Java
  • 回答数1
  • ありがとう数1

質問者が選んだベストアンサー

  • ベストアンサー
noname#161640
noname#161640
回答No.1

>anaによって参照されたオブジェクトのみでいいのでしょうか? つまり、anaに設定されているAnalog自身と、その中で参照されているdigital(Digital)インスタンス、という意味ですね。その通りです。

wiredrikou
質問者

お礼

ありがとうございました!

関連するQ&A

  • Javaのガーベジコレクションについて。

    javaのガーベジコレクションの対象となるタイミングがわからないので教えて下さい。 class Sample{ Sample gc; } class SampleMain{ public static void main(String[] args){ Sample gc1 = new Sample(); Sample gc2 = new Saample(); gc1.gc = gc2; gc2.gc = gc1; gc1 = null; gc2 = null; } }

    • ベストアンサー
    • Java
  • Javaでタイマーの使い方

    Javaでタイマーの使い方作り方がわかりません import javax.swing.Timerこれつかいます。 package Test1; import javax.swing.Timer; public class Test1 { Timer TM = new Timer(10, null); public static void main(String[] args) { } } よろしくお願いします。

    • ベストアンサー
    • Java
  • Javaのガーベジコレクションについて

    class Sample{ Sample sm; } class SampleMain{ public static void main(String[] args){ Sample sm1 = new Sample(); Sample sm2 = new Sample(); sm1.sm = sm2; sm2.sm = sm1; sm1 = null; sm2 = null; } } このプログラムでガーベジコレクションの対象(実行される可能性がある)は何行目になりますか?

    • ベストアンサー
    • Java
  • ガーベッジコレクションについて

    ガーベッジコレクションについて勉強してるんですが、定義は理解できたんですが、以下のプログラムの意味が全く理解できません。どこからどこにいってるのかがさっぱりです。簡単にでもいいんで、このプログラムの流れを教えていただけませんか? 特にgetObject(); System.gc();の意味を教えてもらえるとありがたいです。 コンストラクタ、インスタンスなどは理解しています。 class Garbage01{ static int num = 0; public Garbage01(){ num++; } public void finalize(){ num--; } } public class Garbage01Use{ public static void main(String[] args){ Garbage01 g = null; for(int i = 0 ; i < 10; i++){ g = new Garbage01(); } System.out.println(Garbage01.num); getObject(); System.gc(); System.out.println(Garbage01.num); } private static void getObject(){ for(int i = 0 ; i < 100000000 ; i++){    new Object(); } } }

    • ベストアンサー
    • Java
  • javaのmainメソッド

    public static void main(String args[]) と public static void main(String[] args) の違いを説明してくれないですか? 小さい質問ですいませんが、回答よろしくおねがいします!

  • Javaで配列を定義する方法

    こんにちは、片岡といいます。 Java言語で配列を定義する場合、以下の二つの書式に違いはありますか。 違いがあるとすれば、どのような違いですか。 また、違いがないのならば、どちらの記述がよいのですか。 ご存知の方はいらっしゃいませんか。 (1) public class Main1 { public static void main(String[] args) { String str[] = new String[] { new String("itiban"), new String("niban"), new String("sanban"), }; for (int i = 0; i < str.length; i++ ) { System.out.println(str[i]); } } } (2) public class Main2 { public static void main(String[] args) { String str[] = { new String("itiban"), new String("niban"), new String("sanban"), }; for (int i = 0; i < str.length; i++ ) { System.out.println(str[i]); } } } なお、私の環境は以下の通りです。 OS: Microsoft Windows XP Professional SP2 java: java version "1.4.2_13" 検索エンジンで"配列 オブジェクト java"を検索しましたが、 解決に役立つ情報は見つかりませんでした。

    • ベストアンサー
    • Java
  • JAVAコンストラクタについて

    JAVA のコンストラクタ定義の際に、下記のようにコンストラクタにvoidを付けた時と付けない時の処理結果が変わるのはなぜでしょうか。 (1) class O { protected int d; O(){ System.out.println("O = " + d); } } class Study_6_3main_void { public static void main(String args[]) { int i = 1; O OO = new O(); System.out.println("O = "); } } (2) class O { protected int d; void O(){ System.out.println("O = " + d); } } class Study_6_3main_void { public static void main(String args[]) { int i = 1; O OO = new O(); System.out.println("O = "); } } 実行結果 (1) O = 0 O = (2) O = 以上です。回答の程よろしくおねがいします。

    • ベストアンサー
    • Java
  • javaのpackageのMainとは?

    古い本の初心者プログラムでは、 class Hello{ public static void main(String[] args){ System.out.println("Hello!"); } } だけなんですが、統合環境の Intellij IDEAですと、 package com.company; public class Main { public static void main(String[] args) { // write your code here } } となっていて、mainメソッドを含むクラスのMainを含むpackageが必要になっています。どうしてクラスMainは他のpackageで宣言されてないとならないのですか?

    • ベストアンサー
    • Java
  • javaの質問です。その2

    明日JavaのBronze試験を受けに行くのですが、全然わからずに困っています。 紫色のJavaプログラマBronzr[SE7]という本を使用しています。 本の模試の問題です。 38 Class Foo{ static int val; static int methodA() {return ++val;} } Class Test{ public static void main(String[] args){ Foo.obj =new Foo(); obj.methodA(); }} } この問題では int valと宣言していますが、初期化をしていません。 なのでnullのはずなのですが、 なぜ++valで1になるのかがよくわかりません。 null+1は計算できないと思うのですが、、、、、 明日テストなので本当に困っています。

    • ベストアンサー
    • Java
  • Javaについて教えてください!

    sampleパッケージに属するMain.javaとSub.javaがあり、Main.javaのmainはSub.javaのsubメソッドを呼び出して「OK」と表示させるプログラムを教えてください! //Main.java package sample; public class Main{ public static void main(String[] args){ Sub.sub(); }} //Sub.java package sample; public class Sub{ static String str = "OK"; public static void sub(){ System.out.println(str); }} String型の変数strはクラス変数で行いたいのですが、どこを改善すれば良いでしょうか?

    • ベストアンサー
    • Java

専門家に質問してみよう