栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

JVM常见运行参数说明

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

JVM常见运行参数说明

1)堆栈大小相关设置
功能参数说明
堆栈大小设置-Xms512m等价于-XX:InitialHeapSize,设置JVM初始堆内存为512M
-Xmx2048m等价于-XX:MaxHeapSize,设置JVM最大堆内存为2048M
-Xss256k等价于 -XX:ThreadStackSize,设置Java线程堆栈大小
-Xmn设置新生代的空间大小,一般不配置
-XX:-UseAdaptiveSizePolicy关闭自适应的内存分配策略
方法区JDK7-XX:PermSize=100m
-XX:MaxPermSize=100m
JDK8-XX:metaspaceSize=100m
-XX:MaxmetaspaceSize=100m
比例设置-XX:SurvivorRatio=8设置新生代中Eden区与Survivor区的比例,默认值是8,即Eden:so:s1=8:1:1
-XX:NewRatio=2设置新生代与老年代的比例,默认值是2
大小说明

一般将-Xms和-Xmx配置成一样的值,目的是为了能够在Java垃圾回收机制清理完堆区后不需要重新分隔计算堆区的大小,从而提高性能。

默认情况下,初始堆大小:物理内存大小的1/64。最大堆大小:物理内存大小的1/4或1G。
参考官方文档:https://docs.oracle.com/javase/8/docs/technotes/guides/vm/gc-ergonomics.html

#示例:
Xms60m -Xmx60m -Xss512k
自适应说明

注:
1)默认SurvivorRatio=8,但是在运行的过程中,JVM可能会动态调整,即使关闭自适应参数(-XX:-UseAdaptiveSizePolicy)也会动态调整,解决办法是显式指定-XX:SurvivorRatio=8。
2)-Xmn可以设置新生代的空间的大小与NewRatio参数冲突,如果设置了以-Xmn为准。

2)输出GC日志
功能参数说明
输出GC日志-verbose:gc打印GC简要信息
‐XX:+PrintGC输出GC日志
‐XX:+PrintGCDetails输出GC的详细日志
‐XX:+PrintGCTimeStamps输出GC的时间戳(以基准时间的形式)
‐XX:+PrintGCDateStamps输出GC的时间戳(以日期的形式,如 2013‐05‐04T21:53:59.234+0800)
‐XX:+PrintHeapAtGC在进行GC的前后打印出堆的信息
‐Xloggc:../logs/gc.log日志文件的输出路径
#例如:
-XX:+UseG1GC
-XX:MaxGCPauseMillis=100
-Xmx16m
-XX:+PrintGCDetails
-XX:+PrintGCTimeStamps
-XX:+PrintGCDateStamps
-XX:+PrintHeapAtGC
-Xloggc:E://gc.log
3)OOM时输出Heap dump(堆转储)
功能参数说明
OOM时输出Heap dump(堆转储)-XX:+HeapDumpOnOutOfMemoryErrorOOM时输出堆dump文件
-XX:HeapDumpPath=/opt/dump.hprof指定堆dump文件的位置
#例如:
-XX:+HeapDumponOutOfMemoryError
-XX:HeapDumpPath=/opt/3.hprof
4)垃圾收集
功能参数说明
串行垃圾收集器-XX:+UseSerialGC开启这个参数,新生代和老年代都是串行,Client模式下默认
新生代ParNew垃圾收集器‐XX:+UseParNewGC新生代使用ParNew回收器,老年代使用串行收集器,老年代可以搭配CMS
-XX:ParallelGCThreads=10新生代并行线程数量
老年代CMS垃圾收集器(低延迟)-XX:+UseConcMarkSweepGC老年代使用CMS垃圾收集器,只能与Serial和ParNew搭配,不能和Parallel搭配。JDK8下开启CMS,新生代默认使用ParNew收集器。
-XX:CMSInitiatingOccupancyFraction=-1设置堆内存使用率的域值,达到域值便开始回收
-XX:+UseCMSCompactAtFullCollection用于指定在执行完Full GC后对内存空间进行压缩,避免内存碎片。不过内存压缩整理过程无法并发执行,所以停顿时间变得更长。
-XX:CMSFullGCsBeforeCompaction=0设置在执行多少次Full GC后对内存空间进行压缩整理。
-XX:ConcGCThreads=3(早期JVM版本也叫-XX:ParallelCMSThreads)定义并发CMS过程运行时的线程数。
ParallelGC垃圾收集器(吞吐量优先)-XX:+UseParallelGC新生代并行垃圾收集器,JDK8默认
-XX:+UseParallelOldGC老年代并行垃圾收集器,JDK8默认,这两参数开启一个,另一个自动开启
-XX:ParallelGCThreads=10新生代并行线程数量
-XX:MaxGCPauseMillis设置最大的垃圾收集时的停顿时间(STW),单位为毫秒。
注意:ParallelGC为了达到设置的停顿时间,可能会调整堆大小或其他的参数,如果堆的大小设置的较小,就会导致GC工作变得很频繁,反而可能会影响到性能。该参数使用需谨慎。
-XX:GCTimeRatio设置垃圾回收时间占程序运行时间的百分比,公式为1/(1+n)。 它的值为0~100之间的数字,默认值为99,也就是垃圾回收时间不能超过1%
-XX:+UseAdaptiveSizePolicy自适应GC模式,垃圾回收器将自动调整年轻代、老年代等参数,达到吞吐量、堆大小、停顿时间之间的平衡。 一般用于,手动调整参数比较困难的场景,让收集器自动进行调整。
G1-XX:+UseG1GC使用G1垃圾收集器
-XX:MaxGCPauseMillis=200设置期望达到的最大GC停顿时间指标(JVM会尽力实现,但不保证达到),默认值是200毫秒。
-XX:G1HeapRegionSize=1048576设置的G1区域的大小。值是2的幂,范围是1MB到32MB之间。目标是根据最小的Java堆大小划分出约2048 个区域。默认是堆内存的1/2000。
-XX:ParallelGCThreads=10设置STW工作线程数的值。将n的值设置为逻辑处理器的数量。n的值与逻辑处理器的数量相同,最多为8。
-XX:ConcGCThreads=3设置并行标记的线程数。将n设置为并行垃圾回收线程数 (ParallelGCThreads) 的1/4左右。
-XX:InitiatingHeapOccupancyPercent=45设置触发标记周期的Java堆占用率阈值。默认占用率是整个Java堆的45%。
性能参数-XX:MaxTenuringThreshold进入养老区的次数,默认15
-XX:+DisableExplicitGC禁用System.gc()
5)其他参数
功能参数说明
编译器模式-Xint完全采用解释器模式执行程序
-Xcomp完全采用即使编译器执行程序,如果即时编译出现问题,解释编译会介入执行
-Xmixed采用解释器+即使编译器的混合模式共同执行程序
TLAB-XX:+UseTLAB开启TLAB,默认开启
-XX:TLABWasteTargetPercent=1TLAB默认占Eden区的1%
默认参数-XX:+PrintFlagsInitial查看所有参数的默认初始值
-XX:+PrintFlagsFinal查看所有参数的最终值
其他-XX:+DoEscapeAnalysis逃逸分析,默认开启
-XX:+EliminateAllocations标量替换,默认开启
-XX:CompileThreshold=10000JIT编译方法计数器,client模式默认是1500,server模式默认是10000
-XX:+PrintCommandLineFlags打印命令行参数(包含垃圾收集器)
# 打印命令行参数
D:JavaEEJavaEE_2022_0311JVMTestsrc>java -XX:+PrintCommandLineFlags com.studio.Test
-XX:InitialHeapSize=265097920
-XX:MaxHeapSize=4241566720
-XX:+PrintCommandLineFlags
-XX:+UseCompressedClassPointers
-XX:+UseCompressedOops
-XX:-UseLargePagesIndividualAllocation
-XX:+UseParallelGC

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/777900.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号