笔记一jvm类加载器总结学习
2021-01-27 09:27:56 2 举报
java 虚拟机的学习总结 都是干货 希望内帮助大家进一步了解JVM
作者其他创作
大纲/内容
3.准备
Minor gc 之前
java 结束
1.加载到内从中
POP
使用
否
堆-Xms-Xmx
N
调用loaderClass加载math方式实例
新生代-Xmn
1
操作数栈
windows操作系统下,java.exe调用jvm.dll文件创建java虚拟机
分配内存
动态链接
指针碰撞
程序计数器=1
应用类加载器APPClassLoader
打对像吗?
方法区(存放常量,静态变量、类信息)-XX -XX:MaxmetaspaceSize-XX:metaspaceSize
老年代空间<历次年轻带进入老年代的平均值
main() 栈帧
本地方法栈
Full GC
逃逸分析标量替换
先加载静态变量,分配内存空间赋默认值。如:int =0
S2
jvm销毁
以加载math方法为例,描述类加载器加载math的过程
4.解析
comperter()栈帧
运行指针
Y
老年代2/3
math()方法
加载过程中JVM实行的是双亲委派机制
栈(线程) FILO
S01/10
如果父加载器加载失败由子加载器加载
OOM
JDK8
5.初始化
survivor
栈内分配?
main线程
自定义类加载器
按照规定值初始化
加载类
创建一个引导类加载器实例
初始化
math
Math.java
年轻代
将符号转变为直接引用
最后C发起调用
2.验证
Math.Class
给静态变量赋引用值,执行静态代码块
S1
4
Math.main()
launcher.getClassLoader
jvm内存模型
设置对象头部
EDEN
字节码验证,是否正确
设计双亲委派机制原因1.沙箱安全2.避免重复加载
方法入口
编译成jar包
编译打包
S11/10
math.class
字节码执行引擎
扩展类加载器
空闲列表
是否已经加载类
classloader.loaderClass(math())
执行
C++调用java的启动器Launcher,由引导类加载器加载。同时创建其他类加载器
老年代生于空间<年轻代里先所有对象
JVM
局部变量
堆
加载
FULL GC
没有配置
栈(线程)-Xss
对数据进行核算加载
类加载检测
配置
Minor GC
5
minor gc
loaderClass加载过程加载—>验证—>准备->解析->初始化
Eden8/10
修改
2
main
引导类加载器
栈
如果有这个参数,就会看看老年代的可用内存大小,是否大于之前每一次minor gc后进入老年代的对象的平均大小。
向上委托
获取运行类自己的加载器ClassLoader是APPClassLoader的一个实实例
getLauncher
AGE?
TLAB?
程序计数器
加载完成后执行Math方法的math()入口
是
运行数据
-XX:-HandlePromotionFailure
对象
执行<ini>方法
old
收藏
收藏
0 条评论
下一页