AI
推荐
模板社区
专题
登录
免费注册
首页
思维导图
详情
JVM
2025-05-19 23:43:23
11
举报
分享方式
免费使用
AI智能生成
JVM
JVM
模版推荐
作者其他创作
大纲/内容
类加载机制
装载
类加载器(根据层级先后加载,存在重复类时以已有加载的为准)<br>
Bootstrap<br>
加载$JAVA_HOME中jire/lib/rt.jar中所有的class或Xbootclassapth选项知道的jiar包<br>
Extension<br>
加载java平台中扩展功能的一些jira包,包括$JAVA_HOME中jire/lib/*.jar或-Djava.ext.dirs指定目录下的jira包<br>
Application<br>
加载classpath中指定jar包及Djava.class.path所指定的目录下的类和jar包<br>
通常用于业务代码加载和依赖包的加载,分别位于classes和lib文件下,通常classes会优先于lib加载,可以借助这个加载顺序,在业务文件中实现对依赖包中文件的修改
Custom<br>
通过java.lang.ClassLoader的子类自定义加载class,属于应用程序根据自身需要自定义的ClassLoader,如tomcat,jboss都会根据J2ee规范自行实现ClassLoader<br>
如何打破双亲委派机制<br>
重写loadClass<br>
SPI<br>
OSGI<br>
链接<br>
验证
确保加载类符合规范
准备<br>
为类或接口的静态字段赋默认值<br>
赋值为默认值是为了分配空间吗?<br>
解析
动态的将运行时常量池中的符号引用转变为直接引用<br>
常量池和运行时常量池时相同的东西,只是一个加载在磁盘中,一个加载在内存中
符号引用和直接引用:符号引用就是关于类、方法、字段等内容的描述,无法被直接执行,直接引用则是指向这些内容的内存地址/物理地址<br>
初始化
运行时数据区<br>
进程生命周期<br>
方法区<br>
类的元数据信息和模板信息<br>
<= java7 perm space 使用java内存<br>
>= java8 metaspace 使用系统内存<br>
堆<br>
对象内存占用
对象头<br>
Mark Word<br>
一系列的标记位((哈希码、分代年龄、锁状态标志等)8字节<br>
Class Pointer<br>
指向对象对应类元数据的内存地址(堆指向方法区)8字节<br>
Length<br>
数组对象持有,代表数据长度<br>
实例数据
boolean、byte 1字节<br>short、char 2字节<br>int、float 4字节<br>long、double 8字节<br>reference 8字节<br>
对齐填充<br>
保证对象大小为8字节的整数倍<br>
线程生命周期
虚拟机栈<br>
PC Register<br>
用于记录当前方法的执行节点<br>
本地方法栈
GC<br>
堆内存分布
old<br>
什么情况下进入老年代
大对象,eden区无法分配空间
在s区年龄达到的长期存活对象
young
eden
对象优先分配在这里
s0
s1
s0和s1时轮训使用的一个空间,另外一个会被限制,当youngGc触发时,非垃圾对象会进入这里/从另外一个s区被复制进来,发生移动时年龄+1,当s区存不下时会向old区进行空间担保<br>
空间担保的流程
old中最大的可用连续空间是否大于新生代所有对象空间<br>
大于,发起发起Minor GC<br>
小于,检查HandlePromotionFailure是否设置<br>
没,进行Full GC<br>
有,检查老年代的最大可用连续空间是否大于l历次晋升到老年代的对象平均大小<br>
大于,进行Minor GC,看看GC后S区是否足够存储存活对象<br>
不够,放入老年代,老年代也放不下,直接OOM<br>
够,存放在S区<br>
小于,Full GC<br>
垃圾对象确认
引用计数
存在循环引用的垃圾对象无法被回收<br>
可达性分析
GC Root直接或间接可访问就不会被回收<br>
垃圾回收算法<br>
标记-清除
遍历整个堆空间,耗时高,且会空间碎片化<br>
标记-整理
比清除更麻烦,耗时更高
标记-复制<br>
浪费空间
垃圾收集器
具体实现<br>
Serial<br>
单线程,STW,适用于单核,新老皆可用<br>
Parallel<br>
Serial的多线程版本
CMS<br>
标记清除,空间碎片问题,适用老年代,STW时间低,通常配合ParallelNew一起使用<br>
G1<br>
解决了空间碎片问题,切STW时间更低,适用新老<br>
ZGC<br>
STW最小,但牺牲吞吐<br>
分类
串行<br>
Serial
并行
Parallel
并发
CMS、G1、ZGC
收藏
立即使用
JVM
osgpjwyRuD9RKfG
职业:暂无
去主页
Collect
Get Started
JVM
Collect
Get Started
JVM
Collect
Get Started
JVM
Collect
Get Started
JVM
评论
0
条评论
下一页
图形选择
思维导图
主题
补充说明
AI生成
修改AI描述
去编辑
重新生成
提示
关闭后当前内容将不会保存,是否继续?
取消
确定
Document