jvm
2020-07-17 17:23:24 0 举报
AI智能生成
Jvm概述
作者其他创作
大纲/内容
其他
对象内存布局
String底层
字符串常量池变化
执行引擎与JIT
解释器
(Just in Time) 即时编译器
-XX:CompileThreshold=N(调整热点代码执行次数)
-XX:CICompilerCount=N参数指定的编译线程数
XX:ReservedCodeCacheSize=<SIZE> 代码缓存最大内存
-XX:InitialCodeCacheSize=<SIZE> 代码缓存初始内存
-XX:CounterHalfLifeTime 半衰弱时间,单位秒
-XX:+UseCounterDecay 关闭热度衰减,只要运行时间够长全部都能缓存
强软弱虚
逃逸分析
栈上分配
同步取消
标量替换
JVM
subSystem(类加载子系统)
loding(加载)
ClassLoader(类加载器)
BootstrapLoader(引导类加载器)
ExtClassLoader(扩展类加载器)
AppClassLoader(应用类加载器)
...ClassLoader(自定义类加载器)
双亲委派与沙箱安全机制
linking(链接)
verify(检测)
文件格式验证
是否以魔术0xCAFEBABE开通
主次版本号是否在接受范围
常量池是否有不被支持的类型
检测常量值的索引是否执行不符合类型的常量
...
元数据验证
这个类是否有父类
这个类是否继承了不被允许的父类
是否实现类抽象方法
是否方法的重载重写正确
字节码验证
验证局部变量表会不会被操作数栈放入不同类型数据
保证任何跳转不会跳到栈帧以为的字节码指令上
父类引用可以指向子类对象,而不是返回来或者不相干
符号引用验证
符号引导描述的字符串类能否找到
符号引用描述的名称、字段、方法是否存在
对于访问修饰符是否有权限
prepare(准备)
resolve(解析)
initialization(初始化)
RuntimeDateAreas(运行时数据区)
program count registers(程序计数寄存器)
virtual machine Stack(虚拟机栈)
stack frame(栈帧)
LocalVariableTable(局部变量表)
Slot(变量槽)
operand stack(操作数栈)
return address(返回值地址)
dynamic linking(动态链接)
LineNumberTable(行号表)
Exception table(异常信息表)
方法的调用过程
invokedynamic(动态调用)
静态链接
早期绑定
非虚方法
invokestatic(调用静态方法)
invokeespecial(调用类或超类的构造器)
动态链接
晚期绑定
虚方法
invokeinterface(调用接口)
invokevirtual(调用所有的虚方法)
(virtual method table)虚方法表
heap(堆)
Old Generation
Young Generation
Eden
survival 1
survival 0
Method Area(方法区)
jdk1.6及之前
类型信息
类加载器信息
域信息
方法信息
JIT代码缓存
静态变量
运行时常量池
字符串常量池
jdk1.7
jdk1.8及之后
native method Stack(本地方法栈)
线程私有
GC垃圾回收
回收算法
makr(标记阶段)
引用计数算法
可达性分析算法/根搜索算法
内存结构方向
各个线程被调用方法使用到的参数、局部变量等
JNI本地方法栈引用对象
静态属性引用对象
字符串常量池里的引用
被锁持有的对象
java虚拟机内部的引用
eclipse方向
eclispse官网
System Class
JNI Local
JNI Global
Thread Block
Thread
Busy Monitor
Java Local
Native Stack
Finalizable
Unfinalized
Unreachable
Java Stack Frame
collection(清除阶段)
标记清除
标记复制
标记压缩
垃圾回收器
YGC
Serial GC
ParNew GC
Parller Scane GC
OldGC
Serial Old GC
CMS GC
Parller Old GC
Region GC
G1
remember set
region
H区
子主题
ZGC
其他厂商
Sanedoen GC
Ali GC
垃圾回收器组合
JVM参数总汇
日志分析工具
0 条评论
回复 删除
下一页