科学健康资讯 · 内容仅供参考,不替代专业诊疗 联系我们|疾病百科
操作系统

reservedcodecachesize

2023-05-01 操作系统 本文链接

JVM在解释器之外引入了即时编译器(Just In Time),以此来提升Java性能。这里介绍一下JIT实践相关的参数。

1.编译相关的参数

-XX:+TieredCompilation:开启分层编译,JDK8之后默认开启

-XX:+CICompilerCount=N:编译线程数,设置数量后,JVM会自动分配线程数,C1:C2 = 1:2

-XX:TierXBackEdgeThreshold:OSR编译的阈值

-XX:TierXMinInvocationThreshold:开启分层编译后各层调用的阈值

-XX:TierXCompileThreshold:开启分层编译后的编译阈值

-XX:ReservedCodeCacheSize:codeCache最大大小

-XX:InitialCodeCacheSize:codeCache初始大小

其中-XX:TierXMinInvocationThreshold是开启分层编译的情况下,触发编译的阈值参数,当方法调用次数大于由参数

-XX:TierXInvocationThreshold指定的阈值乘以系数,或者当方法调用次数大于由参数

-XX:TierXMINInvocationThreshold指定的阈值乘以系数,并且方法调用次数和循环回边次数之和大于由参数-XX:TierXCompileThreshold指定的阈值乘以系数时,便会触发X层即时编译。分层编译开启下会乘以一个系数,系数根据当前编译的方法和编译线程数确定,降低阈值可以提升编译方法数,一些常用但是不能编译的方法可以编译优化提升性能。

2.查看编译日志

通过添加-XX:+UnlockDiagnosticVMOptions -XX:+PrintCompilation -XX:+PrintInlining -XX:+PrintCodeCache -XX:+

PrintCodeCacheOnCompilation -XX:+TraceClassLoading -XX:+LogCompilation -XX:LogFile=LogPath参数可以输出编译、内联、codeCache信息到文件。文件可以通过JITwatch(网页链接)进行查看分析。

附,分层编译(折中编译速度和编译质量)的五个层级

1,解释执行。

2,执行不带profiling的C1代码。

3,执行仅带方法调用次数以及循环回边执行次数profiling的C1代码。

4,执行带所有profiling的C1代码。

5,执行C2代码

本文内容仅供健康科普参考,不能替代专业医疗诊断和治疗建议。如有身体不适,请及时就医并遵从医师指导。

相关阅读