关于java垃圾回收

java05 2008-11-11 01:17:51
java提供了一个方法 System.gc().文挡说的挺模糊的.
我只想弄明白,调用这个方法后,垃圾回收器是否立即执行?还是回收器内部会根据一些条件判断是否执行呢.
因为很多资料都说,程序员不能显示的调用垃圾回收器.但我认为这就是显示的调用了垃圾回收器``
希望大家能帮我解惑..谢谢
...全文
139 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
yyx14725 2008-11-11
  • 打赏
  • 举报
回复
1楼说得有点小问题。
System.gc()是一个异步方法,所以调用后并不会立即执行释放内存的操作
垃圾回收器是一个比较复杂的机制
每个公司开发的JVM版本,对于垃圾回收器机制和性能上也有微小的差别
IBM网站有关内存泄露的一篇文档上有提到以上说法
另外为了给你彻底解惑
我找了篇资料,你可以看下。
http://www.knowsky.com/364448.html
renmms 2008-11-11
  • 打赏
  • 举报
回复
比如:

class   Test{   
public void sayit(){
System.out.println("sayit");
}
public static void main(String[] args){
new Test();
System.gc();
}
}


main函数里,new test() 没有被引用,所以,调用System.gc();

之后就会符合垃圾回收的要求,一般线程不要繁忙的情况下都会被回收。

weizhao_2008 2008-11-11
  • 打赏
  • 举报
回复
不是调用了就立即执行,而是有垃圾收集器自动分撇何时收回垃圾。 System.gc().就好比是,通知垃圾收集器,我内存用完了,你可以收回了,至于好久收回,那是收集器的事。
ZangXT 2008-11-11
  • 打赏
  • 举报
回复
不能保证马上执行。
scarlet365 2008-11-11
  • 打赏
  • 举报
回复
就上生活中.你有垃圾只需放在垃圾站.清洁工会自己去处理那些垃圾.你不能也不必知道清洁工什么时候会来处理垃圾.
调用system.gc就好比.打电话给环卫局.催促他们来处理垃圾.但他们什么时候来就不一定了.也许马上.也许一年.谁知道呢..
ouyangxiaokang6 2008-11-11
  • 打赏
  • 举报
回复
马上执行。
renmms 2008-11-11
  • 打赏
  • 举报
回复
不调用的话会到一定程度上自动运行,

强制调用了就会马上执行了

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧