JVM基础参数配置简介
jvm基础参数.png标准选项-verbose.png JVM运行模式.png JVM常用X选项.png标准选项(cmd下 输入java 即可打印所有标准选项)
X选项也叫非标准选项(cmd下输入java -X 即可打印所有非标准选项)
XX选项(cmd下输入java -XX:+PrintFlagsInitial -version,即可打印所有XX选项的默认值)
本次分享主要就是说基于HotSpot JVM平台,讲这三类JVM参数,其中还会演示一些工具平台的使用
JVM编译.png有时候输出并不是以X选项的模式输出的,而是以XX选项输出的,值的单位一般为KB
指定JIT编译器模式
Java是一种解释型语言,但随着JIT技术的进步,它能在运行时将Java的字节码编译成本地代码。以下是几个相关的选项:
-Xint表示禁用JIT,所有字节码都被解释执行,这个模式的速度最慢的(字节码->机器码)。
-Xcomp表示所有字节码都首先被编译成本地代码(即机器码),然后再执行。
-Xmixed,默认模式,让JIT根据程序运行的情况,有选择地将某些代码编译成本地代码。
-Xcomp和-Xmixed到底谁的速度快,针对不同的程序可能有不同的结果,基本还是推荐用默认模式。
JVM进阶参数配置简介
XX选项.png堆区配置.png-XX:+PrintFlagsFinal:所有XX参数的默认值
and -XX:+PrintFlagsInitial 查看所有JVM参数启动的初始值
-XX:+UnlockExperimentalVMOptions
-XX:+UnlockDiagnosticVMOptions
-XX:+PrintCommandLineFlags 所有跟最初的默认值不同的参数及它们的值
非堆配置.png-XX:MaxTenuringThreshold
-XX:MaxTenuringThreshold只对串行回收器和ParNew有效,对ParallGC无效。存活次数在串行和ParNew方式中可通过-XX:MaxTenuringThreshold来设置,ParallelScavenge则根据运行状态来决定。
-XX:PretenureSizeThreshold
-XX:PretenureSizeThreshold,设置大对象直接进入年老代的阈值。-XX:PretenureSizeThreshold只对串行回收器和ParNew有效,对ParallGC无效。默认该值为0,即不指定最大的晋升大小,一切由运行情况决定。
元空间配置.pnghttps://blog.csdn.net/qq_33301113/article/details/67071632
https://www.jianshu.com/p/7ab3e3a6562e
GC收集器总览.png GC配置.png1、字符串存在永久代中,容易出现性能问题和内存溢出。
2、类及方法的信息等比较难确定其大小,因此对于永久代的大小指定比较困难,太小容易出现永久代溢出,太大则容易导致老年代溢出。
3、永久代会为 GC 带来不必要的复杂度,并且回收效率偏低。
4、Oracle 可能会将HotSpot 与 JRockit 合二为一。
CMS垃圾收集器配置.pnghttp://www.ityouknow.com/jvm/2017/08/29/GC-garbage-collection.html
G1垃圾收集器配置.png GC打印.png第二,三,四的参数对于CMS的标记过程比较慢的时候可以起到一定的缓解作用
高级参数&调试工具
高级GC配置.png下面介绍一些平时不怎么遇到的参数,以及如果出现相关的问题,可以通过JVM参数去跟踪调试,优化
代码缓存.png 编译与跟踪.png JVM自带工具&调试命令.png 其他JVM工具与网站.pngGC相关的配置,其实还不止这些,这里再给大家介绍两个 -Xloggc:D:/CMSgc.log,-XX:+UseGCLogFileRotation(按GC日志大小切分日志信息)但是大多数情况下这些基本够用
总结
以上为内部分享部分资料,其实还有很多内容没有说到,抛砖引玉吧
https://www.jianshu.com/p/86e358afdf17
https://www.cnblogs.com/aspirant/p/8663872.html
网友评论