我只是按照教练的偏好使用acm包。
该程序应该分配10000个合理对象,使它们变为垃圾,然后在使用垃圾收集器之前和之后计算空闲内存。然后,它应该打印垃圾收集器已清除的内存量。
import acm.program.*;
public class RuntimeGarbage extends ConsoleProgram {
public void run() {
println("Allocating 10000 Rational Objects");
for(int i=1; i==10000; i++) {
new Rational();
}
Runtime myRuntime = Runtime.getRuntime();
long free_before = myRuntime.freeMemory();
myRuntime.gc();
long free_after = myRuntime.freeMemory();
println("Garbage collection freed" + ((free_after)-(free_before)) + "bytes");
}
}
这个问题是,当我尝试编译代码时,cmd显示以下内容:
:8: error: cannot find symbol
new Rational();
with an arrow right below the R.
可能是问题是在大括号内创建对象吗?
答案 0 :(得分:0)
编译器说的是它不知道Rational定义的类型。 是的,您可以在for循环的代码块中创建对象。
根据谷歌的说法,类型Rational没有在包acm中定义
rational site:www-cs-faculty.stanford.edu/~eroberts/jtf/javadoc/student/acm/
因此必须在其他地方定义。
它看起来也不属于内置的java类型 http://docs.oracle.com/javase/7/docs/api/