图解JVM的垃圾回收----新生代与老年代

本文详细介绍了JVM的垃圾回收机制,包括引用计数和可达性分析两种算法,以及标记-清除、标记-整理和标记-复制三种主要的垃圾回收算法。重点讨论了新生代和老年代的垃圾回收流程,如MinorGC和MajorGC(Full GC)的工作原理,阐述了如何处理伊甸园、幸存区和老年代的对象,强调了垃圾回收在解决内存空间不足问题中的关键作用。
摘要由CSDN通过智能技术生成

什么是JVM的垃圾回收?

垃圾回收机制需要明白的三件事情

1.那些垃圾是需要回收的

2.有哪些重要的垃圾回收算法

3.垃圾回收的具体流程是怎样的

1.那些垃圾是需要回收的

1.判断对象是否需要回收有两种算法
	引用计数算法
	可达性分析算法

引用计数算法

引用计数算法通过记录对象被引用的次数,从而判断该对象的重要程度.如果该对象被其他对象引用,则它的引用计数加一,如果删除对该对象的引用,那么它的引用计数就减一,当该对象的引用计数为0时,那么该对象就会被回收
存在的问题:
当有两个对象相互引用时,由于它们互相引用对方,所以计数都不为领,这就会导致这个对象无法回收.
所以,java虚拟机采用的是可达性分析算法

可达性分析算法

可达性分析算法,首先要确定一系列根对象,并从根对象为起点根据对象之间的引用关系搜索出一条引用链,在引用链的对象就存活,而不在引用链的对象就认定为可回收对象.

比喻:可达性分析算法就好比在清洗葡萄串,我们从根部提起葡萄,那写葡萄根茎就像引用链,而没有和引用链项链的对象,就像散落在盆中的葡萄,可以进行回收
根对象
虚拟机栈中引用的对象(正在运行的方法使用的变量,参数等)

方法区中类静态属性引用的对象(static关键字声明的字段)

方法区中常量引用的对象(也就是final关键字声明的字段)

本地方法栈中引用的对象(native方法)

java虚拟机内部的引用(系统内部的东西当然能作为根了)

2.有哪些重要的垃圾回收算法

标记-清除算法

标记-清除法是最基本的一种垃圾回收算法,总的来说分为两步:标记和清除
标记

在这里插入图片描述

清除

  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值