JVM原理和GC原理

JVM体系分为4块:

  • 类的加载机制
  • JVM内存机构
  • GC算法 垃圾回收
  • GC分析 命令调优

类的加载机制:

  • 类的加载是将类的.class文件中的二进制数据从磁盘加载到内存中,将其放在运行时数据区的方法区内,然后在堆区创建一个java.lang.class 对象,用来封装类在方法区内的数据结构。类的加载的最终产品是位于堆区中的class对象,并向Java程序员提供了访问方法区内的数据结构的接口。
  • 类的生命周期:
    加载 →连接(验证→准备→解析)→初始化
    这里写图片描述
  • 类加载器:
    这里写图片描述
  • 类加载机制:
    • 全盘负责:当一个类加载器负责加载某个class时,该class所依赖的和所引用的其他class也将由该类的加载器负责载入,除非显示地使用另外一个类加载器来载入
    • 父类委托:当一个class需要被加载时,会先调用启动类加载器(Bootstrap ClassLoader ) ,加载器查找其加载路径下是否有此class文件,有则加载,没有则交给子加载器去加载,依次类推
    • 缓存机制:缓存机制将会保证所有加载过的class都会被缓存,当程序中需要使用某个class时,类加载器先从缓存区寻找该class,只有缓存区不存在,系统才会读取该类对应的二进制数据,并将起转换成class对象,存入缓存区

JVM内存结构:
这里写图片描述

GC算法 垃圾回收:

对象存活判断

  • 引用计数:每个对象有一个引用计数属性,新增一个此对象时,计数加1,引用释放时计数减1,当对象的引用计数为0时,可以回收
  • 不可达分析:从GC Roots开始往下搜索,搜索走过的路径称为引用链,当一个对象到GC Roots没有任何引用链时,则证明此对象不可用的,不可达对象

GC算法:

  • 标记-清除算法:标记所有需要回收的对象,然后统一回收

  • 复制算法:内存分为大小相同的两块,每次用一块,满了,将活着的复制到另一块中

  • 标记-压缩算法: 标记过程仍然与“标记-清除”算法一样,但后续步骤不是直接对可回收对象进行清理,而是让所有存活的对象都向一端移动,然后直接清理掉端边界以外的内存

  • 分段收集算法:“分代收集”(Generational Collection)算法,把Java堆分为新生代和老年代,这样就可以根据各个年代的特点采用最适当的收集算法。

GC分析 命令调优

此处后期补充 :)

更详细:JVM知识点总结

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值