-1

さて、変数に保存せずに10000個の合理的なオブジェクトを割り当てて、それらがすべてガベージになるプログラムを作成しようとしています。その後、ガベージ コレクションの前後に空きメモリの量を測定し、その差を使用して解放されたバイト数を報告する必要があります。これまでのところ、2 つの .java ファイルを作成しました。Rational.java と gc.java。コンストラクター Rational を作成して、gc.java ファイルの void run メソッドで "呼び出す" ことができるようにします。コンストラクターは、値 x/y を持つ新しい有理オブジェクトを作成します。

しかし、エラーが発生します: Javaエラー:シンボルが見つかりません

シンボルメソッド gcd(Math.abs(x),Math.abs(y));

ロケーション クラス 合理的

1 エラー

ここに私の2つのJAVAファイルがあります:

RATIONAL.java

import acm.program.*;

public class Rational {

    public Rational(int x,int y) {

        int g = gcd(Math.abs(x),Math.abs(y));
        int num;
        int den;
        num = x/g;
        den = Math.abs(y)/g;
        if (y<0) {
            num = -num;
        }
    }
}

そして GC.java

import acm.program.*;


public  class gc extends ConsoleProgram {

    public void run() {

        println("Allocating 10000 objects");

        for(int i = 0;i<10000;i++) {
            new Rational(i+1,i+2);
        }

        Runtime myTime = Runtime.getRuntime();
        long a = myTime.freeMemory();
        println(a);
        myTime.gc();
        long b = myTime.freeMemory();
        println(b);
        println((a-b));
    }
}

私の間違いが見つからないので、修正できます。あなたの助けをいただければ幸いです

ここのコンパイラによると、問題は次のとおりです。 int g = gcd(Math.abs(x),Math.abs(y));

編集:うまくいきました!! gcd メソッドを正しく作成しました。

4

1 に答える 1