JVM参数说明&实战

JVM基础参数配置简介

jvm基础参数.png

标准选项(cmd下 输入java 即可打印所有标准选项)
X选项也叫非标准选项(cmd下输入java -X 即可打印所有非标准选项)
XX选项(cmd下输入java -XX: PrintFlagsInitial -version,即可打印所有XX选项的默认值)
本次分享主要就是说基于HotSpot JVM平台,讲这三类JVM参数,其中还会演示一些工具平台的使用

标准选项-verbose.png

JVM运行模式.png

JVM常用X选项.png

有时候输出并不是以X选项的模式输出的,而是以XX选项输出的,值的单位一般为KB

JVM编译.png

指定JIT编译器模式
Java是一种解释型语言,但随着JIT技术的进步,它能在运行时将Java的字节码编译成本地代码。以下是几个相关的选项:
-Xint表示禁用JIT,所有字节码都被解释执行,这个模式的速度最慢的(字节码->机器码)。
-Xcomp表示所有字节码都首先被编译成本地代码(即机器码),然后再执行。
-Xmixed,默认模式,让JIT根据程序运行的情况,有选择地将某些代码编译成本地代码。
-Xcomp和-Xmixed到底谁的速度快,针对不同的程序可能有不同的结果,基本还是推荐用默认模式。

JVM进阶参数配置简介

XX选项.png

-XX: PrintFlagsFinal:所有XX参数的默认值
and -XX: PrintFlagsInitial 查看所有JVM参数启动的初始值
-XX: UnlockExperimentalVMOptions
-XX: UnlockDiagnosticVMOptions
-XX: PrintCommandLineFlags 所有跟最初的默认值不同的参数及它们的值

堆区配置.png

扫描二维码关注公众号,回复: 8966281 查看本文章

-XX:MaxTenuringThreshold
-XX:MaxTenuringThreshold只对串行回收器和ParNew有效,对ParallGC无效。存活次数在串行和ParNew方式中可通过-XX:MaxTenuringThreshold来设置,ParallelScavenge则根据运行状态来决定。
-XX:PretenureSizeThreshold
-XX:PretenureSizeThreshold,设置大对象直接进入年老代的阈值。-XX:PretenureSizeThreshold只对串行回收器和ParNew有效,对ParallGC无效。默认该值为0,即不指定最大的晋升大小,一切由运行情况决定。

非堆配置.png

https://blog.csdn.net/qq_33301113/article/details/67071632
https://www.jianshu.com/p/7ab3e3a6562e

元空间配置.png

1、字符串存在永久代中,容易出现性能问题和内存溢出。
2、类及方法的信息等比较难确定其大小,因此对于永久代的大小指定比较困难,太小容易出现永久代溢出,太大则容易导致老年代溢出。
3、永久代会为 GC 带来不必要的复杂度,并且回收效率偏低。
4、Oracle 可能会将HotSpot 与 JRockit 合二为一。

GC收集器总览.png

GC配置.png

http://www.ityouknow.com/jvm/2017/08/29/GC-garbage-collection.html

CMS垃圾收集器配置.png

第二,三,四的参数对于CMS的标记过程比较慢的时候可以起到一定的缓解作用

G1垃圾收集器配置.png

GC打印.png

高级参数&调试工具

下面介绍一些平时不怎么遇到的参数,以及如果出现相关的问题,可以通过JVM参数去跟踪调试,优化

高级GC配置.png

GC相关的配置,其实还不止这些,这里再给大家介绍两个 -Xloggc:D:/CMSgc.log,-XX: UseGCLogFileRotation(按GC日志大小切分日志信息)但是大多数情况下这些基本够用

代码缓存.png

编译与跟踪.png

JVM自带工具&调试命令.png

其他JVM工具与网站.png

总结

以上为内部分享部分资料,其实还有很多内容没有说到,抛砖引玉吧https://www.jianshu.com/p/86e358afdf17https://www.cnblogs.com/aspirant/p/8663872.html

架构设计@工程设计@服务稳定性之路

发布了159 篇原创文章 · 获赞 69 · 访问量 35万+

猜你喜欢

转载自blog.csdn.net/u010504064/article/details/103546040
今日推荐