关于垃圾回收的总结

java垃圾回收,主要是靠一个低优先级的进程负责回收,注意,不是后台的进程他的优点是边回收,边调整堆使其紧凑。为了提高系统效率,垃圾回收器通常只在满足两个条件时才运行:即有对象要回收且系统需要回收。切记垃圾回收要占用时间,因此,Java运行时系统只在需要的时候才使用它。因此你无法知道垃圾回收发生的精确时间。

 

理解垃圾回收的前提是理解Java运行时的内存堆栈模型,目的是为了对Java内存管理有个认识,在编程时更有效的使用内存。但不要为了垃圾回收,手动编写大量代码,我们可以用简单的编程来影响它的实现。

a.将无用对象赋值为null
   b.
重新为引用变量赋值。比如:Person p = new Person("aaa");p = new Person("bbb");这样,new Person("aaa")这个对象就是垃圾了----符合垃圾回收条件了。
   c.
让相互联系的对象称为对象Person p1 = new Person("aaa");Person p2 = new Person("bbb");Person p3 = new Person("ccc");p1=p2; p2=p3; p3=p1;p1=null; p2=null; p3=null;在没有对p1p2p3null之前,它们之间是一种三角恋关系。分别置null,三角恋关系依然存在,但是三个变量不在使用它们了。三个Person对象就组成了一个孤岛,最后死在堆上----被垃圾回收掉。
  d.
强制的垃圾回收System.gc()实际上这里的强制,是程序员的意愿、建议,什么时候执行是JVM的垃圾回收器说了算。调用垃圾回收也不一定能保证未使用的对象一定能从内存中删除。唯一能保证的是,当你内存在极少的情况,垃圾回收器在程序抛出OutofMemaryException之前运行一次。
  e.
finalize方法透视垃圾收集器的运行。在JVM垃圾收集器收集一个对象之前,一般要求程序调用适当的方法释放资源,但在没有明确释放资源的情况下,Java提供了缺省机制来终止化该对象心释放资源,这个方法就是finalize()。

原型为:

 

注意:

 

 

 

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值