我正在研究java的垃圾收集器部分,我编写了下面的java类,但是它在方法printGCStats()中显示了eclipse编辑器本身的编译时错误 在选择它时显示错误“无效”@expected,请告知如何克服这个......
import java.lang.management.GarbageCollectorMXBean;
import java.lang.management.ManagementFactory;
class demoGrbage {
public static void main(String[] args) {
public void printGCStats()
{
long totalGarbageCollections = 0;
long garbageCollectionTime = 0;
for(GarbageCollectorMXBean gc :
ManagementFactory.getGarbageCollectorMXBeans()) {
long count = gc.getCollectionCount();
if(count >= 0) {
totalGarbageCollections += count;
}
long time = gc.getCollectionTime();
if(time >= 0) {
garbageCollectionTime += time;
}
}
System.out.println("Total Garbage Collections: "
+ totalGarbageCollections);
System.out.println("Total Garbage Collection Time (ms): "
+ garbageCollectionTime);
}
}
}
答案 0 :(得分:1)
您已在方法内定义方法。它不允许在java。
在main之外定义printGCStats
并调用main方法。
答案 1 :(得分:0)
将方法public void printGCStats()
移出main()
答案 2 :(得分:0)
您已在printGCStats
方法中撰写main
。
您应该将其称为:
public static void main(String[] args)
{
printGCStats();
}
public void printGCStats()
{
/// ...
}
答案 3 :(得分:0)
这是一个非常基本的错误。如何在另一个方法中定义方法? 你在main()中定义了printGCStats(),这是非法的。
使用此:
class demoGrbage {
public static void main(String[] args) {
demoGrbage demo = new demoGrbage();
demo.printGCStats();
}
public void printGCStats()
{
long totalGarbageCollections = 0;
long garbageCollectionTime = 0;
for(GarbageCollectorMXBean gc :
ManagementFactory.getGarbageCollectorMXBeans()) {
long count = gc.getCollectionCount();
if(count >= 0) {
totalGarbageCollections += count;
}
long time = gc.getCollectionTime();
if(time >= 0) {
garbageCollectionTime += time;
}
}
System.out.println("Total Garbage Collections: "
+ totalGarbageCollections);
System.out.println("Total Garbage Collection Time (ms): "
+ garbageCollectionTime);
}
}