JVM垃圾回收机制


前言

JVM垃圾回收机制
1.如何判断对象可以回收
2.垃圾回收算法
3.分代垃圾回收


一、如何判断对象可以回收

1.1引用计数法
计数算法
1.2可达性分析法
一串葡萄 提起 掉落的就是不可达的
Java虚拟机中的垃圾回收器采用可达性分析来探索所有存活的对象
扫描根中的对象 看是否能够沿着GC Root对象为起点的引用链找到该对象,找不到,表示可以回收
哪些对象可以作为GC Root?
MAT(Memory Analyzer)

二、垃圾回收算法

2.1 标记清除
标记:看看哪些是垃圾
清除:做一个清除
优点:速度快
缺点:空间不连续,内存溢出
2.2 标记整理
标记:看看哪些是垃圾
整理:可用对象向前放,没有内存碎片
缺点:移动速度变慢
2.3复制算法
将内存区划分成了大小相等的两块区域
标记:看看哪些是垃圾
复制:将有用部分复制到新的区域
交换两个区域
优点:不会产生碎片
缺点 :占用双倍内存空间

三、分代垃圾回收

实际的jvm虚拟机不会只采用一种算法 他会几种算法相结合
新生代:包含伊甸园、幸存区From 幸存区To
老年代:
Minor GC:新生代内存不足
Full GC:老年代内存不足
1.对象首先分配在伊甸园区域
2.当新生代空间不足时 触发 minor gc 伊甸园和from存活的对象使用copy复制到to中,存活的对象年龄+1 并且交换From to
3.minor gc 会引发 stop the world暂停其他用户的线程 等垃圾回收结束 用户线程才恢复运行
4.当对象寿命超过阈值时,会晋升至老年代 最大寿命是15(4bit)
5.当老年代空间不足,会先尝试触发minor gc 如果之后空间仍不足 那么触发full gc,stop the world 时间会更长
6.如果此时内存还不够 会触发 out of memory

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值