1-3jvm (3)

1 . 四种算法

在这里插入图片描述

1.1 引用记数法(了解 实际上不会用)

在这里插入图片描述、这个对象有三处引用,有人引用就加1,没有引用就减1,减到0 的时候,说明没人引用我,没用用的就是垃圾,需要被jvm 收集到

1.2 复制算法

年轻代中使用的是Minor GC,这种算法采用的就是复制算法
优点: 不会产生内存碎片
缺点: 耗空间
在这里插入图片描述

当我new一个对象时,他是放在了新生区的缅甸区。
。任意的堆空间是有限的,假设一直new对象。达到一定阈值以后,Eden 满了,就会触发YGC(轻GC) 。
。堆内存溢出,就开始杀,但是有些对象确实在引用的,所以就不能杀光,Eden基本杀光,活着那几个就会复制到幸存者0区from区 。
。在继续不断的new对象,第二次 Eden 又满了,只要GC,Eden必须清空。将
剩下的对象拷贝到to区。复制后有交换,上一步的from区变成to区(因为上一步的幸存者0区已经空了,变成to区),上一步的to区变成from区【谁空谁是t】

。假设杀了十几次还在幸存,说明这个对象长期使用不能回收,就会从新生区流到了养老区

。因为new的快,当新生区,养老区都满了,就会发生FGC(负GC)
FGC 多次,发现养老区空间没办法腾出来,就会发生OOM,俗称堆内存溢出

1.3 标记清除

优点:不需要额外空间
缺点:两次扫描,耗时严重。会产生内存碎片
在这里插入图片描述

1.3 标记压缩

比标记清除多一个整理的过程
缺点:耗时最长

在整理压缩过程,不在对标记的对象做回收,而是通过所有存活对象都像一边移动,然后直接清除边界意外的内存

2 哪个算法最好?

没有最好的算法,只要根据每一代垃圾回收的特点来选择算法

新生代: 复制算法
老年代: 标记清除,标记压缩

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值