java类编译时出错

时间:2013-03-25 07:11:59

标签: java

我正在研究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);
        }
}
}

4 个答案:

答案 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);
}

}