垃圾回收

GC垃圾回收机制
java中垃圾回收机制的作用是对程序中无任何引用的对象占据的内存空间进行释放的一种释放内存的方式。
java中垃圾回收机制有几个明显的特点。
1.垃圾回收是由虚拟机即JVM执行;
2.系统空闲时执行
3.释放的一定是不再被引用的对象
4.回收方法gc(),虽然可以主动调用,但是不确定会立即执行。
5.垃圾回收机制只负责回收堆内存,不会回收任何物理资源。
6.程序无法精确的控制垃圾回收的进行,会在合适的时候进行。
7.在垃圾回收机制回收的任何对象之前,总会先调用它的finalize()方法
8.垃圾回收机制回收的是无任何引用的对象占据的内存空间,而不是对象本身。
强制垃圾回收有两种方式:
1.调用System类的gc()静态方法:System.gc();
2.调用Runtime对象的gc()实例:Runtime.getRuntime.gc();
垃圾回收机制:
1.引用计数法。当有引用连接对象的时候,计数器会加一,当对象失去引用或为null的时候,计数器减一,当垃圾回收的时候,发现计数为0的就要被回收掉。
这种方式有几个缺点,1.这个过程在整个程序运行过程中都会持续的执行2.有的引用传递的对象不为0,但是需要进行清除,3.每次都要进行全扫描。
2.停止-复制。适用于需要清除对象比较多的情况下,需要先将程序暂停,然后将有效的全部复制到另外一片内存中,没有复制的就是需要清除的。
优点:新堆是有序的,一个一个的紧凑排列的
缺点:当没有很多需要回收的对象时,也要进行复制。
3.标记-清除。遍历所有的引用,当引用为存活状态的时候,就进行标记,这个过程不会回收任何的对象,只有当全部标记完成之后才进行释放
优点:当需要回收的对象比较少的时候效率比较高。
缺点:剩下的空间不是连续的,垃圾回收如果希望连续空间的话,就要重新整理剩下的对象。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值