微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

2022-07-20-JVM的基础认识

图灵学院jvm
https://www.bilibili.com/video/BV14a411B7Ux?p=1

JVM作用

image

JVM内存模型图

image


image

javap常用的命令

image


.class类文件

image


执行javap命令后的操作 输出一个文件而不是控制台打印

image


反汇编后的实际内容

image


JVM指令手册(局部 官方文档 指令码解释手册 查手册就好)

image


线程栈、栈帧关系图

image

Athas入门-下载操作

image


Athas入门-基础操作

image

为什么JVM GC设计者考虑到了full gc时的STW机制:stop the world?
STW,是为了停止所有用户线程,只是保留gc线程运行,为了防止用户线程的对象,一会是非垃圾,一会是垃圾,导致影响gc线程不能很好停止或结束。

对JVM调优,让其几乎不发生full gc?

image

让minor gc,每次触发之时,不回收整个eden区,而是只是回收一小部分,部分回收,占用时间少,不会造成客户端超时,用户感知不明显,减少单次gc时间。或者换另外一种思路,定时只回收固定时间(10-50ms)的垃圾内存。或者边收集,边回收。

image


image

g1垃圾收集器

image


java线程内存模型JMM

image

缓存一致性协议(MESI协议 I:invalid 使无效)

image

image

image

volatile 在汇编底层有一个lock前缀指令,它会做一件事情,保证多线程之间的共享变量间的相互之间的及时的可见性。

image


image

指令重排之遵循asifserial and happensbefore原则

image


image

P6 没看 20-33没看

JVM如何创建一个对象?

image

反汇编指令:javap -v -c xxx.class

image

指令:jinfo java进程ID:可以查看JVM相关参数信息
指令:jmap -heap java进程ID:可以查看堆空间分配信息

class类文件 && jvm常量池详细解析

image


class类文件结构

image

一个对象没有引用指向它的时候,就属于垃圾对象。判断垃圾对象的方法有以下2种。如何识别垃圾对象
(1)引用计数法

image


image


image

(2)可达性分析算法

image


image

JVM垃圾回收算法3种介绍

image

【1】标记清除

image


image

【2】复制算法

image


image

【3】标记整理

image


image

三者区别

image

现有的垃圾收集器包含10种

image

JVM内存模型剖析(JVM可视化工具:控制台任意cmd下执行命令 jvisualvm 可打开jdk自带工具:jvisualvm)

image

新生代、老年代垃圾收集-采用的算法对比

image

(1)SerialGC 串行

image


(2)ParallelGC 并行

image


(3)CMS收集器 并发标记清除(不会暂停用户线程)

image

电商系统案例

image


image


image

对象动态年龄判断

image

类加载过程

image

类加载器完整执行流程

image

JVM核心加载器包含3个
(1)引导类加载器(由C++实现,加载jre/ 下的rt.jar等核心jar包),(2)扩展类加载器(加载jre/ext/下的所有jar包),(3)应用类加载器(加载自己实现的类)。

image

类加载器两个核心方法

image

双亲委派机制面试题(一个类只会被类加载器加载一次)提高效率。

image

自定义类加载器(继承父类,重写2个方法

image

tomcat实现了打破双亲委派机制

image

Object对象头介绍

image

(学习笔记整理)参考视频资料:
https://www.bilibili.com/video/BV1DA411G7fR?p=1

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐