JVM-GC笔记

JVM进行GC时候大多数发生在新生代(Eden)

  • 新生代(内含有一个Eden区和两个幸存者区,比例为8:1:1)
  • 老年代(又称养老代)
  • 永久代(JDK1.8后更名为元空间)
    堆空间

分区这有个博客图文结合好理解:https://blog.youkuaiyun.com/qq_19734597/article/details/80958817

GC种类:

  • MinorGC(当Eden区满了情况下执行,清理年轻代空间(包括 Eden 和 Survivor 区域))
  • MajorGC(主要清理永久代)
  • FullGC(清理整个堆空间,清理整个年轻代和老年代,男女老少都杀了惹 )

GC算法分类:

  • 复制法(英文忘了):好处就是无碎片空间,坏处就是浪费一半空间.作用于新生代,因为对象存活率较低
  • 标记清除法(Mark-Sweep):缺点:空间碎片化,标记扫描两次,时间耗用严重,优点:不需要像复制法一样需要额外可见.
  • 标记压缩法(Mark-Compact):缺点就是效率相对较低,多了对象向前移动的时间成本,优点是空间利用率最高,无内存碎片.

分类总结:

  • 内存时间效率:复制>标记清除>标记压缩
  • 内存空间整齐度:复制=标记压缩>标记清除
  • 内存使用率:标记压缩=标记清除>复制

GC四大类型(好像大厂会考吧,):https://www.cnblogs.com/maokun/articles/7618472.html

(注意GC算法类型和GC类型不是一码事 )

判断对象是否为垃圾

-方法:

  • 根可达算法(主流):这个算法的基本思路就是通过一系列的称为“GC Roots”的对象作为起始点,从这些节点开始向下搜索,搜索所走过的路径称为引用链(Reference Chain),当一个对象到GC Roots没有任何引用链相连(用图论的话来说,就是从GC Roots到这个对象不可达)时,则证明此对象是不可用的。
  • 引用计数算法 (已淘汰的历史产物):给对象中添加一个引用计数器,每当有一个地方引用它时,计数器值就加1;当引用失效时,计数器值就减1;任何时刻计数器为0的对象就是不可能再被使用的。虽然执行效率高,但是无法解决循环依赖,即对象之间相互引用,JVM无法判断是否为垃圾.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值