1

我正在测试一些 JDK,需要多次触发垃圾回收。我怎样才能在一个简单的程序中轻松做到这一点?示例将非常有帮助。谢谢你。

4

3 回答 3

3

有关垃圾收集的精彩讨论,请参见此处。您可以要求运行它(如先前的答案所述),但这不是保证,因此您不应对调用做出过多假设。您最好的选择是多次创建和销毁新对象。为了让它们被销毁,在一个块中创建它们并再次关闭它。也许是这样的:

for(int i = 0; i < MAX; ++i) {
    {
        Integer i = new Integer(0);
    }
}

您可以从外部监控内存使用情况吗?

于 2012-07-26T20:13:27.573 回答
2

您可以使用System.gc()来请求垃圾收集

在您的问题的背景下,这个SO 讨论可能很有趣

于 2012-07-26T20:03:13.730 回答
1

Oracle 文档使用System.gc()

public static void gc()

运行垃圾收集器。调用 gc 方法表明 Java 虚拟机花费精力回收未使用的对象,以便使它们当前占用的内存可用于快速重用。当控制从方法调用返回时,Java 虚拟机已尽最大努力从所有丢弃的对象中回收空间。

调用 System.gc() 实际上等效于调用:

Runtime.getRuntime().gc()

于 2012-07-26T20:04:11.693 回答