Java垃圾回收机制知识点总结

Java垃圾回收机制知识点总结

1.Java垃圾回收机制是Java语言的重要功能之一。当程序创建对象,数组等引用类型对象时,系统会自动在内存区为之分配一块内存,对象就保存在这块内存区内,当这块内存不再被任何变量引用时,这块内存就成为了垃圾,等待垃圾回收机制进行回收。

2.Java 垃圾回收机制的特征:

(1)垃圾回收机制只负责回收堆内存中的对象,不会回收任何物理资源(例如数据库连接、网络连接、IO流等资源)。

(2)程序无法精准控制垃圾回收的运行,垃圾回收会合适的时候进行。当对象永久性地失去引用后,系统就会在合适的时候回收它所占得内存。

(3)在垃圾回收机制回收对象之前,总会先调用它的finalize()方法。

(4)将对象的引用赋值为null,也不能释放掉该对象所占的内存,赋值为null,只是说明该对象可以被回收了,但是具体什么时候回收是程序员无法控制的,有jvm决定的;

3.Java Object的finalize()方法:

     Java 允许使用 finalize() 方法在垃圾收集器将对象从内存中清除出去之前做必要的清理工作。这个方法是当垃圾回收器确定不存在对该对象的更多引用时,由对象的垃圾回收器调用此方法。它是在 Object 类中定义的,因此所有的类都继承了它。子类覆盖 finalize() 方法以整理系统资源或者执行其他清理工作。

注:使用该方法可能使将要回收的对象重新复活(让一个引用变量重新引用该变量),从而导致垃圾回收机制取消回收。

4.强制垃圾回收的两种方式:

(1)调用System类的gc()静态方法:System.gc()。

(2)调用Runtime对象的gc()实例方法:Runtime.getRuntime().gc()。

注:1)仅仅是通知系统进行垃圾回收,但系统是否进行垃圾回收依然不确定。大部分时候,程序强制系统垃圾回收后总会有一些效果。

     2)在《java虚拟机》一书中明确讲了,释放掉占据的内存空间是由gc完成,但是程序员无法明确强制其运行,该空间在不被引用的时候不一定会立即被释放,这取决于GC本身,无法由程序员通过代码控制。

5.对象的四种引用方式:

(1)强引用(StrongReference)    一个对象被一个或一个以上的引用变量所引用。

(2)软引用(SoftReference)       内存不足时可能会被回收

(3)弱引用(WeakReference)      不管内存是否足够,总会回收该对象所占用的内存

(4)虚引用(PhantomReference)  完全类似于没有引用,虚引用不能单独使用,虚引用必须和引用队列联合使用,主要用于跟踪对象被垃圾回收的状态。

6.Java回收机制的优缺点:

优点:

(1)可以很好的提高编程效率,在一个没有垃圾收集机制的语言下编程,程序员还要花时间来解决难以捉摸的内存问题;

(2)保护程序的完整性,因为程序员不可能因为失误错误地释放内存而导致jvm崩溃;

缺点:

(1)Java回收机制的开销影响程序的运行。






评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

雅静8

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值