GC通用参数

  • -Xmn -Xms -Xmx -Xss

    年轻代 最小堆 最大堆 栈空间

  • -XX:+UseTLAB

    使用TLAB,默认打开

  • -XX:+PrintTLAB

    打印TLAB的使用情况

  • -XX:TLABSize

    设置TLAB大小(一般不建议改动)

  • -XX:+DisableExplictGC

    线上环境一定要打开,避免写System.gc(),开启的话手动gc就不管用 ,FGC

  • -XX:+PrintGC

    开启打印GC日志

  • -XX:+PrintGCDetails

    打印GC详细信息

  • -XX:+PrintHeapAtGC

    打印在发生GC时候的堆信息

  • -XX:+PrintGCTimeStamps

    打印GC的时间

  • -XX:+PrintGCApplicationConcurrentTime

    (重要性低) 打印应用程序时间

  • -XX:+PrintGCApplicationStoppedTime

(重要性低) 打印暂停时长

  • -XX:+PrintReferenceGC

    (重要性低) 记录回收了多少种不同引用类型的引用

  • -verbose:class

    类加载详细过程

  • -XX:+PrintVMOptions

    打印JVM详细参数

  • -XX:+PrintFlagsFinal -XX:+PrintFlagsInitial

    必须会用,java -XX:+PrintFlagsFinal -version | grep G1

  • -Xloggc:opt/log/gc.log

  • -XX:MaxTenuringThreshold

    设置升代年龄,最大值15

  • -XX:PreBlockSpin

    锁自旋次数 ,热点代码检测参数

  • -XX:CompileThreshold

    逃逸分析 标量替换 ... 这些不建议设置

Parallel常用参数

  • -XX:SurvivorRatio

    新生代中Eden区域和Survivor区域(From幸存区或To幸存区)的比例,默认为8

  • -XX:PreTenureSizeThreshold

    大对象到底多大

  • -XX:MaxTenuringThreshold

    进入老年代的年龄阈值,默认15(对象被复制的次数)

  • -XX:+ParallelGCThreads

    并行收集器的线程数,同样适用于CMS,一般设为和CPU核数相同

  • -XX:+UseAdaptiveSizePolicy

    自动选择各区大小比例

CMS常用参数

  • -XX:+UseConcMarkSweepGC

    开启CMS垃圾回收

  • -XX:ParallelCMSThreads

    设置CMS线程数量,一般为CPU核数的一半,CMS线程是在老年代,要留一些CPU给用户线程

  • -XX:CMSInitiatingOccupancyFraction

    使用多少比例的老年代后开始CMS收集,默认是68%(近似值),如果频繁发生SerialOld卡顿,应该调小,(频繁CMS回收)

  • -XX:+UseCMSCompactAtFullCollection

    在FGC时进行压缩

  • -XX:CMSFullGCsBeforeCompaction

    多少次FGC之后进行压缩

  • -XX:+CMSClassUnloadingEnabled

  • -XX:CMSInitiatingPermOccupancyFraction

    达到什么比例时进行Perm回收

  • GCTimeRatio

    设置GC时间占用程序运行时间的百分比

  • -XX:MaxGCPauseMillis

    停顿时间,是一个建议时间,GC会尝试用各种手段达到这个时间,比如减小年轻代

G1常用参数

  • -XX:+UseG1GC

    开启G1垃圾回收

  • -XX:MaxGCPauseMillis

    建议值,G1会尝试调整Young区的块数来达到这个值

  • -XX:+G1HeapRegionSize

    分区大小,建议逐渐增大该值,1 2 4 8 16 32。 随着size增加,垃圾的存活时间更长,GC间隔更长,但每次GC的时间也会更长 ZGC做了改进(动态区块大小)

  • G1NewSizePercent

    新生代最小比例,默认为5%

  • G1MaxNewSizePercent

    新生代最大比例,默认为60%

  • GCTimeRatio

    GC时间建议比例,G1会根据这个值调整堆空间

  • ConcGCThreads

    线程数量

  • InitiatingHeapOccupancyPercent

    启动G1的堆空间占用比例

JVM调优常用参数总结的更多相关文章

  1. JVM调优常用参数和注意点备忘录

    本文主要是工作过程中总结的一些jvm调优的参数和注意的地方,作为一个备忘录,先占个坑,有时间在来细化具体的实例. gc日志是覆盖的方式如果文件名字固定会导致上一次被覆盖可以采用这个-Xloggc:ba ...

  2. JVM调优常用参数配置

    堆配置 -Xms:初始堆大小 -Xms:最大堆大小 -XX:NewSize=n:设置年轻代大小 -XX:NewRatio=n:设置年轻代和年老代的比值.如:为3表示年轻代和年老代比值为1:3,年轻代占 ...

  3. JVM调优常用参数

    JVM常用参数配置 -Xmx2048m 最大堆大小 -Xms1024m 初始堆大小 -Xmn1024m 年轻代大小 -XX:SurvivorRatio=8 Eden区与Survivor区的大小比值,设 ...

  4. JVM调优及参数设置

    (1)参数 -Xms:初始堆大小 -Xmx :最大堆大小 此值可以设置与-Xmx相同,以避免每次垃圾回收完成后JVM重新分配内存 -Xmn :年轻代大小 整个堆大小=年轻代大小 + 年老代大小 + 持 ...

  5. jvm调优具体参数配置

    3.JVM参数 在JVM启动参数中,可以设置跟内存.垃圾回收相关的一些参数设置,默认情况不做任何设置JVM会工作的很好,但对一些配置很好的Server和具体的应用必须仔细调优才能获得最佳性能.通过设置 ...

  6. JVM调优-GC参数

    一.Throughput收集器(吞吐量)-XX:+UseParallelGC-XX:+UseParallelOldGC *参数调整:通过调整堆大小,减少GC停顿时间,增大吞吐量增强堆大小可以减少Ful ...

  7. (转)JVM调优常用命令(jstat、jmap、jstack)

    原文:https://www.cnblogs.com/ityouknow/p/5714703.html 一.jstat jstat(JVM statistics Monitoring)是用于监视虚拟机 ...

  8. java面试-JVM调优和参数配置,如何查看JVM系统参数默认值

    一.JVM的参数类型: 1.标配参数: java -version java -help 2.X参数: -Xmixed 混合模式(先编译后执行) -Xint  解释执行 -Xcomp 第一次使用就编译 ...

  9. JVM调优篇

    点赞再看,养成习惯,微信搜索「小大白日志」关注这个搬砖人. 文章不定期同步公众号,还有各种一线大厂面试原题.我的学习系列笔记. 基础概念 一般JVM调优,重点在于调整JVM堆大小.调整垃圾回收器 jv ...

随机推荐

  1. playable

    探索TimelinePlayableAPI,让Timeline为所欲为 https://blog.csdn.net/qq826364410/article/details/80534892 Playa ...

  2. 《神经网络的梯度推导与代码验证》之vanilla RNN的前向传播和反向梯度推导

    在本篇章,我们将专门针对vanilla RNN,也就是所谓的原始RNN这种网络结构进行前向传播介绍和反向梯度推导.更多相关内容请见<神经网络的梯度推导与代码验证>系列介绍. 注意: 本系列 ...

  3. flex 中间层的高度完全由flex元素决定

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  4. 转载:使用java获取某A股当天/上一交易日的交易基本信息

    整个程序是借用了新浪的对外股票接口http://hq.sinajs.cn/list=sh603696,如果把这个地址放到浏览器地址栏里,你将看到: var hq_str_sh603696=" ...

  5. Mysql数据库扩展

    安装跟卸载 Mysql安装 下载Mysql源安装包 1   wget http://dev.mysql.com/get/mysql57-community-release-el7-8.noarch.r ...

  6. .NET多线程(Thread,ThreadPool,Task,Async与Await)

    .NET多线程是什么? 进程与线程 进程是一种正在执行的程序. 线程是程序中的一个执行流. 多线程是指一个程序中可以同时运行多个不同的线程来执行不同的任务. .NET中的线程 Thread是创建和控制 ...

  7. Salesforce LWC学习(二十五) Jest Test

    本篇参看: https://trailhead.salesforce.com/content/learn/modules/test-lightning-web-components https://j ...

  8. White Bird(AOJ 2308)

    原题如下: Angry Birds is a mobile game of a big craze all over the world. You were convinced that it was ...

  9. vue-element-admin实战 | 第二篇: 最小改动接入后台实现根据权限动态加载菜单

    一. 前言 本篇基于 有来商城 youlai-mall微服务项目,通过对vue-element-admin的权限菜单模块理解个性定制其后台接口,实现对vue-element-admin工程几乎不做改动 ...

  10. 关于java中循环的学习

    switch 值是固定的 效率高语法:switch (表达式) { case 常量 1: 语句; break; case 常量 2: 语句; break; … default: 语句; break;} ...