JVM
2024-01-10 16:30:22 1 举报
JVM
作者其他创作
大纲/内容
手册
CA
寄存器
Methord Area
linking
线性整理
可达性分析
对象在finalize方法是否重新与根对象建立连接
null
lock 指令实现
linux
父加载器——父加载器不是“类加载器的加载器”!!也不是“类加载器的父类加载器”
intel x86sfence指令,lfence指令,mfence指令
1.基于栈的指令集(JVM的实现方式,虚拟的实现最终还是落实到硬件)2.基于寄存器的指令集
有必要
Extension
TLAB
1Byte
private final ClassLoader parent
自底向上检查该类是否已经加载parent方向
ARM
操作数栈(Operand Stacks)
栈帧(Frame)
extend
空间重新分配阶段
FE
重新建立
GC
JVM Stack
App
object = null
将对象从F-queue队列移除
自定义ClassLoader
class
GC何时触发:YGC-Eden空间不足-多线程并行执行FGC-Old空间不足-System.gc()
loading
ACC_SYNCHRONIZEDmonitorenter monitorexit
不可达阶段
动态链接(Dynamic Linking)
CPU
synchronized实现
加载classpath指定内容
对象生命周期
verification
对象有没有必要执行finalize方法?
new/yong(新生代)
局部变量
系统CPU经常100%,如何调优?CPU100%name一定有现成在占用系统资源。1.找出哪个进程CPU高(top) Arthas2.该进程中的哪个线程cpu高(top -Hp)3.导出该线程的堆栈 (jstack) (jps 列出所有Java进程)4.查找哪个方法(栈帧)消耗时间 (jstack)5.工作线程占比高 | 垃圾回收线程占比高系统内存飙高,如何查找问题?1.导出堆内存(jmap)2.分析(jhat jvisualvm mat jprofiler)如何监控JVMjstat jvisualvm jprofiler arthas top...
Bootstrap
查
BA
CustomClassLoader
1.字节码层面
一个对象从出生到消亡:
stack
内存
指令:<clinit>(静态语句块)<init>(构造方法)_store_loadinvoke_XXX
方法返回地址(Return)
龙芯
Old(老年代)tenured generation
JVM调优
应用阶段
G1 (1.9以后默认使用G1),要用G1建议8核16G算法:三色标记+STAB(配合RSet)https://www.mashibing.com/study?courseNo=419§ionNo=18245ZGC算法:ColoredPointer+LoadBarrier(读屏障)Shenandoah算法:ColoredPointers+WriteBarrier(写屏障)CMS(运行于老年代)
Heap堆
收集阶段
survivor1
Meta Space(元数据区)>=<JDK1.8字符串常量位于堆会触发FGC清理
x86
4bit一个Hx
resolution
垃圾清除 算法:Mark-Sweep(标记清除)Copying(拷贝)Mark-Compact(标记压缩)
没有必要对象没有重写finalize方法,jvm已经调用过finalize方法
initializing
window
方法形参
加载lib/rt.jar charset.jar等核心类,C++实现
Extension extend Bootstrap ❌
静态变量赋值为初始值
栈帧(一个方法对应一个栈帧)
BE
OS
垃圾收集器如何选择
常见垃圾回收器组合:-PS+PO-PN+CMS
实现屏障
2.JVM层面
Mark-Compact整理算法
JVM定义规范volatile内存区的读写都加屏障
创建阶段
类加载器/双亲委派
intel
终结阶段
Eden
this
垃圾寻找 算法:reference count(引用计数)Root Searching(根可达)
滑动整理
ACC_VOLATILE
Perm Generation(永久代)<JDK1.8字符串常量位于PermSpaceFGC不会清理
栈帧/指令
不可见阶段
随机整理
3.OS和硬件层面
C C++调用了操作系统提供的同步机制
preparation
volatile实现
getClassLoader()
lock 指令实现
survivor2
没有重新建立连接
局部表量表(Local Variables)
静态变量赋默认值
面试题:1.请解释一下对象的创建过程2.对象在内存中的存储布局
8bit
垃圾回收
0 条评论
下一页