さて、変数に保存せずに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 メソッドを正しく作成しました。