JVM常用命令参数

(1)-Xms20M
表示设置JVM启动内存的最小值为20M

(2)-Xmx20M
表示设置JVM启动内存的最大值为20M,将-Xmx和-Xms设置为一样可以避免JVM内存自动扩展。

(3)-verbose:gc
表示输出虚拟机中GC的详细情况

(4)-Xss128k
表示可以设置虚拟机栈的大小为128k  s:stack

(5)-Xoss128k
表示设置本地方法栈的大小为128k。不过HotSpot并不区分虚拟机栈和本地方法栈(HotSpot此参数无效)

(6)-XX:PermSize=10M
表示JVM初始分配的永久代的容量

(7)-XX:MaxPermSize=10M
表示JVM允许分配的永久代的最大容量,大部分情况下这个参数默认为64M

(8)-Xnoclassgc
表示关闭JVM对类的垃圾回收

(9)-XX:+TraceClassLoading
表示查看类的加载信息

(10)-XX:+TraceClassUnLoading
表示查看类的卸载信息

(11)-XX:NewRatio=4
表示设置年轻代:老年代的大小比值为4:1

(12)-XX:SurvivorRatio=8
表示设置2个Survivor区:1个Eden区的大小比值为2:8,这个参数默认为8

(13)-Xmn20M
表示设置年轻代的大小为20M

(14)-XX:+HeapDumpOnOutOfMemoryError
表示可以让虚拟机在出现内存溢出异常时Dump出当前的堆内存转储快照

(15)-XX:+UseG1GC
表示让JVM使用G1垃圾收集器

(16)-XX:+PrintGCDetails
表示在控制台上打印出GC具体细节

(17)-XX:+PrintGC
表示在控制台上打印出GC信息

(18)-XX:PretenureSizeThreshold=3145728
表示对象大于3145728(3M)时直接进入老年代分配,这里只能以字节作为单位

(19)-XX:MaxTenuringThreshold=1
表示对象年龄大于1,自动进入老年代

(20)-XX:CompileThreshold=1000
表示一个方法被调用1000次之后,会被认为是热点代码,并触发即时编译

(21)-XX:+PrintHeapAtGC
表示可以看到每次GC前后堆内存布局

(22)-XX:+PrintTLAB
表示可以看到TLAB的使用情况

(23)-XX:+UseSpining
开启自旋锁

(24)-XX:PreBlockSpin
更改自旋锁的自旋次数,使用这个参数必须先开启自旋锁

-server														# 以服务器模式启动JVM,编译较多的热点代码增加服务区启动时间
-Xms3g														# 设置JVM初始化时堆内存的初始大小
-Xmx3g														# 设置JVM堆内存的最大大小
-Xmn1g														# 指定JVM年轻代大小(优先级高于比例设置,与-XX:OldSize互斥)
-XX:OldSize=512m											# 指定老年代初始大小(与-Xmn互斥)
-XX:NewRatio=2												# 老年代占整个堆的份数,默认是占2份(如果设置为8,则表示老年代占8份),一般比例设置与值设置不同时使用
-Xss256k													# 每个线程的栈大小(最小136K),更小的值可以创建更多线程但更高栈溢出风险,更大的值可以减少栈溢出的风险但会消耗更多内存,从而限制可以创建的线程数量
-XX:SurvivorRatio=8											# 设置Eden区和Survivor区的比例
-XX:MaxTenuringThreshold=15 								# 设置对象从年轻代晋升到老年代的年龄阈值,范围[1-16]
-XX:MetaspaceSize=512m										# 设置元空间初始大小(存放1类的元数据信息,2运行时常量池)
-XX:MaxMetaspaceSize=1g										# 设置元空间最大大小
-XX:PermSize=128m											# 永久代的初始大小(注意作用同元空间,但相对于元空间有很多局限性,现在不用了)
-XX:ReservedCodeCacheSize=512m								# 控制 JIT 编译器用于存储编译后热点代码的缓存大小
-XX:+HeapDumpOnOutOfMemoryError								# 当内存溢出时输出堆栈信息
-XX:HeapDumpPath=D:\code\jt\fwq								# 指定堆栈信息保存的路径
-XX:+UseG1GC												# 指定垃圾收集器为G1
-XX:+UseParallelGC											# 并行垃圾收集器
-XX:+UseConcMarkSweepGC										# 启用并发标记清除(CMS)垃圾回收器
-XX:InitiatingHeapOccupancyPercent=45						# 触发并发 GC 的堆占用比例(当堆的使用达到 45% 时,可能会触发并发垃圾收集)
-XX:MaxGCPauseMillis=15000									# 指定垃圾回收造成的最大STW时间(太小了会导致垃圾清理不过来导致OOM)
-XX:ConcGCThreads=8											# 设置并发垃圾收集线程的数量,通常设置为与CPU核心数相同或略少,用于并发阶段的垃圾收集任务,如标记和清理。
-XX:ParallelGCThreads=8										# 设置垃圾收集的并行线程数,用于并行阶段的垃圾收集任务,如年轻代和老年代的垃圾收集
-XX:-UseBiasedLocking										# 禁用偏向锁,可以减少GC发生safepoint事件的频率,在一定程度上可以降低STW的产生。偏向锁>轻量级锁>重量级锁。(锁升级或者膨胀过程CAS操作不断增加,增加CPU开销)
-XX:-UseCompressedOops										# 禁用压缩对象指针(注意,使用前最好清楚这个参数对程序带来的有利于不利的影响是什么)
-XX:+UseAdaptiveSizePolicy									# 启用自适应调优可以让JVM根据运行时的情况自动调整GC设置
-Xlog:gc*,safepoint:file=gc.log:tags,time,uptime,level		# 开启GC日志记录(JDK9及之后使用,更强大)
-XX:+DisableExplicitGC										# 禁用在代码里显示调用的System.gc()的执行
-XX:+UseLargePages											# 大页面可以减少内存分页的开销,提升GC性能(windows10操作系统不可用)
# 开启控制台输出程序频繁进入安全点的原因分析日志
-XX:+PrintSafepointStatistics								# 打印每次安全点操作的详细统计信息
-XX:PrintSafepointStatisticsCount=1							# 进入几次安全点打印1次统计日志
-XX:+PrintGCApplicationStoppedTime							# 记录每次 GC 操作导致的应用线程暂停时间,以分析 GC 对应用性能的影响。
# 开启GC日志(JDK8及之前才能用)
-XX:+PrintGCDetails											# 打印GC信息
-XX:+PrintGCDateStamps										# 为每个GC事件添加时间戳
-Xloggc:logs/gc.log											# 将gc日志输出到文件

参考文档:https://blog.csdn.net/flyingnet/article/details/81542858

posted @ 2021-09-14 22:11  黄河大道东  阅读(70)  评论(0编辑  收藏  举报