我的后端学习大纲
JVM学习大纲
1、类型1:标准参数选项:
1.1.特点:
- 1.比较稳定,后续基本不会发生变化
- 2.以
“-”
开头
1.2.各种选项:
- 运行
java
或者java -help
可以看到所有的标准选项
1.3.补充内容:
-server与-client
- C1编译器:针对字节码优化简单,优化可以考虑方法内连、去虚拟化、冗余消除
- C2编译器:针对字节码优化较好,支持逃逸分析,基于此,可以使用标量替换,栈上分配,同步消除等
2、类型2:-X参数选项
2.1.特点:
- 1.非标准化参数
- 功能还是比较稳定,但是官方可能后续版本可能会变更
- 以X开头
2.2.各种选项:
- 运行java -X可以看到所有的选项
2.3.JVM的JIT编译模式相关选项
a.-Xint:
- 仅仅使用解释器,禁用JIT,所有字节码都被解释执行,这个模式的速度时最慢的
b.-Xcomp:
- 仅仅使用编译器,所有字节码第一次使用就都被编译成本地代码,然后再执行
c.-Xmixed:
- 1.混合模式,默认模式,让JIT根据程序运行情况
- 2.
使用混合模式是比较推荐的
,混合模式的特点是代码刚开始执行的时候,使用的是解释器,刚开启的时候,代码未预热,直接针对字节码文件执行,速度较快,然后当执行一段时间后,针对热点代码使用JIT编译器进行缓存,这使得Java速度较快,这也是java代码比较快的原因
解释器和编译器在运行引擎中的位置:
2.4.特别的:
- Xmx
:其实是- Xms<size>
设置初始Java堆大小,等价于-XX:MaxHeapSize
- Xms
:其实是- Xms<size>
设置最大Java堆大小,等价于-XX:InitialHeapSize
-XX:- Xss
:其实是- Xms<size>
设置Java线程堆栈大小:等价于-XX:IThreadStackSize
3、类型3:-XX参数选项
3.1.特点:
- 非标准化参数
使用的最多
的参数类型- 这类选项属于实验性,不稳定
- 以
-XX
开头
3.2.作用:
- 开发与调试JVM
3.3.分类:
a.Boolean类型格式:
- 1.
-XX:+<option>
:表示启用属性和-XX:-<option>
:表示禁用属性 - 2.举例:
- 3.说明:因为有的指令默认是开启的,所以使用
-
可以关闭
b.非Boolean类型格式(key-value类型):
- 1.子类型1:数值型格式:
-XX:<option>=<number>
- 2.子类型2:非数值型格式:
-XX:<name>=<string>
3.4.特别的:
-XX:+PrintFlagsFinal
- 输出所有参数的名称与默认值
- 默认不包括Diagnostic(诊断)和Experimental(实验)参数
- 可以配合
-XX:++UnlockDiagnosticVMOptions
和-XX:UnlockExperimentalVMOptions
使用