JVM思维导图
2022-04-27 20:26:03 246 举报
AI智能生成
JVM思维导图是一种图形化的工具,用于表示Java虚拟机(JVM)的结构和功能。它包括了JVM的主要组件,如类加载器、内存模型、执行引擎、垃圾收集器等。此外,它还展示了这些组件之间的关系和交互方式。通过使用JVM思维导图,开发人员可以更好地理解Java程序在运行时的工作原理,从而更有效地优化代码性能和解决潜在问题。总之,JVM思维导图是学习和掌握Java虚拟机的重要工具。
作者其他创作
大纲/内容
类加载机制
类加载运行全过程
windows上的java启动程序是java.exe
第一步: java调用底层的jvm.dll文件创建java虚拟机
在启动虚拟机的过程中, 会创建一个引导类加载器的实例. 这个引导类的加载器是C语言实现的. 然后jvm虚拟机就启动起来了
接下来,C++语言会调用java的启动程序.刚刚只是创建了java虚拟机, java虚拟机里面还有很多启动程序. 其中有一个程序叫做Launcher
真正的去加载本地磁盘的字节码文件,然后启动执行main方法.
main方法执行完毕, 引导类加载器会发起一个c++调用, 销毁JVM
类加载的详细过程
加载
在硬盘上查找并通过IO读入字节码文件,使用到类时才会加载,例如调用类的main()方法,new对象等等
验证
校验字节码文件的正确性,:格式是否正确. 内容是否符合java虚拟机的规范
准备
给类的静态变量分配内存,并赋予默认值
解析
将符号引用替换为直接引用,该阶段会把一些静态方法(符号引用,比如main()方法)替换为指向数据所存内存的指针或句柄等(直接引用),这是所谓的静态链接过程(类加载期间完成)
初始化
对类的静态变量初始化为指定的值,执行静态代码块
使用
卸载
类加载器
引导类加载器(Bootstrap ClassLoader)
引导类加载器主要负责加载最最核心的java类型。 这些类库位于jre目录的lib目录下**. 比如:rt.jar, charset.jar等
扩展类加载器(Ext ClassLoader)
扩展类加载器主要是用来加载扩展的jar包。 加载jar的目录位于jre目录的lib/ext扩展目录中的jar包
应用程序类加载器(App CloassLoader)
主要是用来加载用户自己写的类的。 负责加载classPath路径下的类包
自定义类加载器
负责加载用户自定义路径下的类包
双亲委派机制
自定义一个类加载器
如何打破双亲委派机制?
JVM内存模型
jvm内存模型及其作用
类装载子系统
执行引擎
本地接口
运行时数据区
作用
运行时数据区的组成及其作用
线程共享的
堆
方法区
线程私有的
虚拟机栈
本地方法栈
程序计数器
虚拟机栈的组成部分及其作用
栈帧
局部变量表
操作数栈
动态链接
方法出口
堆的组成部分以及其作用
jvm内存参数设置
jvm对象创建与内存分配机制
对象的创建过程
类加载检查
内存分配
初始化
设置对象头
执行Init()方法
对象的内存分配
分配流程
对象在栈上分配
对象在Eden区分配
长期存活的对象将进入老年代
大对象直接进入老年代
对象动态年龄判断机制
老年代空间分配担保机制
常见的垃圾回收算法和垃圾回收器
垃圾回收算法
标记清除
复制算法
标记整理
垃圾回收器
Serial
Parallel
ParNew
CMS
G1
ZGC
常用调优参数
日志分析
类加载/卸载相关
常用的调优命令
Jamp
Jstack
Jinfo
Jstat
常量池
0 条评论
下一页