+ -
当前位置:首页 → 问答吧 → 关于强制启动垃圾回收器的问题

关于强制启动垃圾回收器的问题

时间:2011-12-03

来源:互联网

我在强制调用垃圾回收器之后并不是立即执行垃圾回收,而是在函数执行完后才执行垃圾回收,这个跟书上的结果不一样,求解释。
运行环境是eclipse
代码示例:
class PersonFinalize
{
public void finalize()
{
System.out.println("The object is going!");
}
public static void main(String[] args) 
{
new PersonFinalize();
//分配堆内存,堆内存使用完后就会变成垃圾
new PersonFinalize();
new PersonFinalize();
System.gc();//强制启动垃圾回收器
System.out.println("The program is ending!");
}
}

运行结果是:
The program is ending!
The object is going!
The object is going!
The object is going!

而书上的结果是
The object is going!
The object is going!
The object is going!
The program is ending!

作者: han1202011   发布时间: 2011-12-03

System.gc()只是建议,不是强制。这个调用还可以使用启动参数 -XX:+DisableExplicitGC 忽略掉。

作者: huntor   发布时间: 2011-12-03

垃圾回收 是独立的 线程`! 你cpu是双核或者更多吗`? 作者 用的 可能是单核产物 ` ╮(╯▽╰)╭ 反正 线程运行顺序 只有 电脑自己知道

作者: privateTia   发布时间: 2011-12-03