JAVA垃圾回收

java语言创建完对象后,自己不用负责释放自己创建的对象,因为后台有垃圾回收进行帮你处理这个事情,使我们省了不少事情,但问题是它怎么知道一个对象是垃圾,该清理了,缺有着不同的实现方式和各有优缺点,下面列举了一些不同的实现
1.引用计数收集器:创建、引用时+1,超过生命周期-1。(早期)
优点:快速,交织在程序中。对不能被长时间打断的程序有利。
缺点:无法检测死循环

2.跟踪收集器:追踪从根节点开始的对象引用图,“标记并清除”

3.压缩收集器:压缩和拷贝。将活动对象越过空闲区域滑动到堆的另一端,使另一段有大的连续空闲区。
对象-句柄-堆
优点:堆中对象移动后只用跟新句柄表引用,无需更新程序本身的引用
缺点:对象访问带来了性能损失

4.拷贝收集器:将所有活动对象移动到一个新的区域,“停止并拷贝”
优点:从根对象遍历的过程中就可以同时拷贝,无需标记
缺点:需要双倍的内存空间,效率低,长生命周期对象来回拷贝

5.按代收集的收集器:按寿命分组,2个或更多子堆。最年幼的代频繁垃圾收集,多次手机仍然存活则移动到高代中
优点:提高效率

6.自适应收集器:监控堆使用。按照具体情况自动调整策略或者分子堆使用不同策略
二、收集完就完事了吗
不听的创建,不听的回收,会形成很多内存碎片,不连续,给以后创建带来很大的影响,所以还有一个转移搬运的过程,就像操作系统的碎片整理一样。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值