A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 贾存双 中级黑马   /  2012-7-15 00:30  /  1475 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

为什么垃圾回收是在整个程序运行完才执行啊??
class Person{
private String name ;
private int age ;
public Person(String name,int age){
  this.name = name ;
  this.age = age ;
}
public String toString(){
  return "姓名:" + this.name + " 年龄:" + this.age ;
}
public void finalize() throws Throwable{
  System.out.println("垃圾被释放了--->:" + this ) ;
}
}
public class OSDemo2{
public static void main(String args[]){
  long startTime = System.currentTimeMillis() ;
  System.getProperties().list(System.out) ;
  System.out.println("===============================") ;
  System.out.println("当前系统信息:" + System.getProperty("os.name")) ;
  System.out.println("当前系统信息:" + System.getProperty("os.arch")) ;
  System.out.println("当前系统版本:" + System.getProperty("os.version")) ;
  System.out.println("当前用户名字:" + System.getProperty("user.name")) ;
  System.out.println("当前用户国家:" + System.getProperty("user.country")) ;
  System.out.println("===============================") ;
  Person per =new Person("J.rain",23) ;
  per = null ;
  System.gc() ;
  long endTime = System.currentTimeMillis() ;
  System.out.println("\n总共运行时间:" + (endTime - startTime) + "毫秒") ;
}
} ;
结果:

4 个回复

正序浏览
因为必须用完才能回收啊
回复 使用道具 举报
可我是手动回收的啊
回复 使用道具 举报
其实垃圾回收器它是不定时执行的,是在内存自动调度分配来执行的,
我们可以使用java给我们提供的方法去建议回收器回收垃圾,但是它
不一定马上去执行,有可能在不确定的情况下执行了。
垃圾回收器就是java中的一种机制,它屏弃了程序员在繁琐的手动的
去删除这些无用的垃圾,它也是java比较易学的体现原因之一。

评分

参与人数 1技术分 +1 收起 理由
蒋映辉 + 1

查看全部评分

回复 使用道具 举报
垃圾回收由一个低级别的线程进行管理……当cpu空闲 或者内存不够用时 运行

我们可以使用 System.gc()或者 Runtime.getRuntime().gc() 来调用垃圾回收 ,但是要注意这个调用
只是建议虚拟机进行垃圾回收,但是不一定立即进行……
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马