Java教程

【学习打卡】第11天+JVM原理篇二

本文主要是介绍【学习打卡】第11天+JVM原理篇二,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

课程名称:笑傲Java面试 剖析大厂高频面试真题 秒变offer收割机

课程章节:第6章 JVM原理篇

主讲老师:求老仙

课程内容:

第6章 JVM原理篇

课程收获:

####1, gc清除算法?

  1. 引用计数:对象被引用的次数,来确定这个对象用不用回收,例如:有两个引用,就是

**引用计数问题,循环引用,**对象被创建引用次数就是1,为1表示没有再被引用,但是不能被回收,因为已经被循环引用

2,标记-清除(双色标记),未被标记的会被清除

从根出发,依次遍历可以找到的对象,若能找到就不回收。(根一般是方法区的静态变量,或这是对象的引用等)

如何解决循环引用的问题,可以使用set集合,将所有元素放入到集合中如果有相等的元素,就是有环,或者通过,快慢指针

双色(标记-清除)算法的问题,标记阶段新增了节点:从root出发,mark线程标记了,A-B,但是另外一个线程新增了个C,就需要重新标记。从C开始重新标记。

  1. gc用的最多的是,三色标记法,解决双色标记中出现新增节点的情况

三色标记算法,用一个灰色,表示未完成mark的标记。

可以用黑色,白色,灰色,三个颜色表示,标记,未标记,未完成标记的三种状态。

过程:先从root开始,到A-B-C

没有被标记的节点,jvm是如何清除的,jvm是可以看到没有被标记的节点,实际上是通过双向链表来实现的,这样就可以找到未被标记的节点

什么时候整理,什么时候复制?Jvm的分区?

分区:Eden-> survivor form -> survivor to -> old

标记-复制算法

标记-清除算法

标记-整理算法

为什么要整理:因为标记-清除算法,产生了内存碎片,所以要进行整理。

为什么要复制:标记整理算法,比较慢,所以使用标记复制

jvm****分区:eden区和survivor区,设置eden和survivor的大小比值:survivorRatio默认:1:8

各个区域的内存划分大小?

按照GC分代手机角度划分

老年代:2/3的堆空间

年轻代:1/3的堆空间

eden区:8/10 的年轻代

survivor0: 1/10 的年轻代

survivor1:1/10的年轻代

元数据区域

元数据区域取代了1.7版本及以前的永久代。元数据和永久代本质上都时方法区的实现。方法区皴法虚拟机加载的类型西,静态变量,常量数据。

参数设置:-XX:MetaspaceSize=18m

-XX:MaxMetaspaceSize=60m

直接内存

java.nio 中使用DirectBuffer相关使用

这篇关于【学习打卡】第11天+JVM原理篇二的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!