Java类加载器和垃圾回收

类加载器

在这里插入图片描述
在这里插入图片描述
类加载器

加载:

 全限定类名获取此类的二进制字节流,其静态存储结构转化为方法区运行时的数据结构如栈,堆,红黑树,二叉搜索树,哈希表。,内存中生成代表类的java.lang.Class对象,作为类中方法区的数据访问入口

验证:

(1)文件格式验证,(2)元数据验证,(3)字节码验证,(4)符号引用验证

准备:

在方法区为类变量分配内存并设置类变量初始值
解析:
为支持运行时绑定,有时在初始化之后才开始
解析即虚拟机将常量池内的富豪引用替换为直接饮用的过程,针对类,接口,字段,类方法,接口方法,方法类型,方法句柄和调用点限定符

初始化:

执行类中定义的Java程序代码,执行clinit()方法的过程

垃圾回收

在这里插入图片描述

垃圾回收:

优点:有效避免内存泄漏
Java堆和方法区(永久代)为主要的回收区域
相关概念:Stop-the-world:JVM执行GC停止应用程序的执行,在任何GC算法中都可以发生。除了GC所需线程,所有线程都处于等待状态知道GC任务完成。GC优化很多时候指减少Stop-the-World发生的时间,使得系统有高吞吐,低停顿特点

引用计数法:

判断对象的引用数量,任何引用计数为0的对象实例都可以当作垃圾收集
可达性分析算法:判断对象的引用链是否可达决定,

标记清除算法:

分为标记和清除两个阶段:先从根集合进行扫描,对存活的对象标记,标记后再扫描整个空间中未被标记的对象进行回收。

复制算法:

将可用内存划分为大小相等的两块,每次只使用一块,当这一块内存用完后将存活的对象复制到另一块,最后对已使用的内存空间进行一次清理。如商用虚拟机回收新生代。

标记整理算法:

类似于标记清除算法,区别在于该算法是让所有存活的对象都向着一端移动,然后直接清理端边界以外的内存,类似于磁盘清理,适用于对象存活率高的场景,如老年代。

分代收集算法:

利用不同对象生命周期不同,以及不同生命周期的对象位于堆中不同的区域,对堆内存不同区域采用不同策略进行回收,从而提高效率。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

梅花与竹

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值