0

我正在研究java的垃圾收集器部分,我已经编写了下面的java类,但是它在选择它时在方法printGCStats()上显示了eclipse编辑器本身的编译时错误,它显示了错误“void”@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

4 回答 4

1

您已经在方法中定义了方法。它不允许在java中。

在 main 外部定义printGCStats并在 main 方法中调用。

于 2013-03-25T07:13:53.777 回答
0

将方法public void printGCStats()移出 main()

于 2013-03-25T07:13:47.437 回答
0

你已经写printGCStatsmain方法。

你应该这样称呼它:

public static void main(String[] args) 
{
    printGCStats();
}

public void printGCStats() 
{
    /// ...
}
于 2013-03-25T07:15:00.740 回答
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);
}

}

于 2013-03-25T07:16:16.177 回答