JVM系列【6】GC与调优6

Stella981
• 阅读 756

JVM系列笔记目录

  • 虚拟机的基础概念
  • class文件结构
  • class文件加载过程
  • jvm内存模型
  • JVM常用指令
  • GC与调优

GC常用参数

  • -Xmn -Xms -Xmx -Xss 年轻代 最小堆 最大堆 栈空间
  • -XX:+UseTLAB 使用TLAB,默认打开
  • -XX:+PrintTLAB 打印TLAB的使用情况
  • -XX:TLABSize 设置TLAB大小
  • -XX:+DisableExplictGC 禁止代码中显示调用GC
  • -XX:+PrintGC 打印GC情况
  • -XX:+PrintGCDetails 打印GC详细过程
  • -XX:+PrintHeapAtGC 在打印GC过程中打印机堆情况
  • -XX:+PrintGCTimeStamps 打印GC时间戳
  • -XX:+PrintGCApplicationConcurrentTime (低) 打印应用程序时间
  • -XX:+PrintGCApplicationStoppedTime低) 打印暂停时长
  • -XX:+PrintReferenceGC (重要性低) 记录回收了多少种不同引用类型的引用
  • -verbose:class 类加载详细过程
  • -XX:+PrintVMOptions 打印虚拟机的参数
  • -XX:+PrintFlagsFinal 打印机最终的参数
  • -XX:+PrintFlagsInitial 打印机初始的参数
  • -Xloggc:opt/log/gc.log 指定GC存储的路径
  • -XX:MaxTenuringThreshold 指定升代年龄,最大值15
  • -XX:PreBlockSpin 锁自旋次数
  • -XX:CompileThreshold 热点代码检测参数

Parallel常用参数

  • -XX:SurvivorRatio survivor区比例
  • -XX:PreTenureSizeThreshold 指定大对象到底多大
  • -XX:MaxTenuringThreshold 指定升代年龄,最大值15
  • -XX:+ParallelGCThreads 并行收集器的线程数,同样适用于CMS,一般设为和CPU核数相同
  • -XX:+UseAdaptiveSizePolicy 自动选择各区大小比例

CMS常用参数

  • -XX:+UseConcMarkSweepGC 使用CMS垃圾回收器
  • -XX:ParallelCMSThreads CMS线程数量
  • -XX:CMSInitiatingOccupancyFraction 使用多少比例的老年代后开始CMS收集,默认是68%(近似值),如果频繁发生SerialOld卡顿,应该调小
  • -XX:+UseCMSCompactAtFullCollection 在FGC时进行压缩
  • -XX:CMSFullGCsBeforeCompaction 多少次FGC之后进行压缩
  • -XX:+CMSClassUnloadingEnabled CMS运行类卸载
  • -XX:CMSInitiatingPermOccupancyFraction CMS达到什么比例时进行Perm回收
  • GCTimeRatio 设置GC时间占用程序运行时间的百分比
  • -XX:MaxGCPauseMillis 停顿时间,是一个建议时间,GC会尝试用各种手段达到这个时间,比如减小年轻代

G1常用参数

  • -XX:+UseG1GC 使用G1
  • -XX:MaxGCPauseMillis 建议值,G1会尝试调整Young区的块数来达到这个值
  • -XX:+G1HeapRegionSize 分区大小,建议逐渐增大该值,1 2 4 8 16 32M; 随着size增加,垃圾的存活时间更长,GC间隔更长,但每次GC的时间也会更长
  • G1NewSizePercent 新生代最小比例,默认为5%
  • G1MaxNewSizePercent 新生代最大比例,默认为60%
  • GCTimeRatio GC时间建议比例,G1会根据这个值调整堆空间
  • ConcGCThreads 线程数量
  • InitiatingHeapOccupancyPercent 启动G1的堆空间占用比例

知识分享,转载请注明出处。学无先后,达者为先!

点赞
收藏
评论区
推荐文章
blmius blmius
3年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
待兔 待兔
4个月前
手写Java HashMap源码
HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22
Stella981 Stella981
3年前
JVM(6):JVM 调优
JVM(6):JVM调优从Eclipse开始来源:纯洁的微笑,www.cnblogs.com/ityouknow/p/5647513.html概述什么是jvm调优呢?jvm调优就是根据gc日志分析jvm内存分配、回收的情况来调整各区域内存比例或者gc回收的策略;更深一层就是根据dump出来的内存结构和线程栈来
Stella981 Stella981
3年前
JVM调优
概述  什么是jvm调优呢?jvm调优就是根据gc日志分析jvm内存分配、回收的情况来调整各区域内存比例或者gc回收的策略;更深一层就是根据dump出来的内存结构和线程栈来分析代码中不合理的地方给予改进。eclipse优化主要涉及的是前者,通过gc日志来分析。本文主要是通过分析eclipsegc日志为例来示例如何根据gc日志来分析jvm内存而进
Stella981 Stella981
3年前
JVM系列【6】GC与调优2
JVM系列笔记目录虚拟机的基础概念class文件结构class文件加载过程jvm内存模型JVM常用指令GC与调优了解HotSpot常用命令行参数JVM的命令行参数参考:https://docs.oracle.com/javase/8/docs/
Stella981 Stella981
3年前
JVM调优思路
一、jvm内存调优(Gc 和Fullgc)hotspot\Xms40m 最小堆内存\Xmx512m最大值内存\verboose:gc\XX:PrintGCDetails\XX:printGCDateStamps\Xloggc:D:/gc/gc.log调优主要调到Gc\PSYoungGen:
Stella981 Stella981
3年前
JVM系列【4】内存模型
JVM系列笔记目录虚拟机的基础概念class文件结构class文件加载过程jvm内存模型JVM常用指令GC与调优硬件层数据一致性\存储器层次结构!file(https://oscimg.oschina.net/osc
Stella981 Stella981
3年前
JVM系列【6】GC与调优1
JVM系列笔记目录虚拟机的基础概念class文件结构class文件加载过程jvm内存模型JVM常用指令GC与调优GC基础知识什么是垃圾​没有任何引用指向的一个对象或多个对象(循环引用)!file(https:
Stella981 Stella981
3年前
JVM系列【6】GC与调优3
JVM系列笔记目录虚拟机的基础概念class文件结构class文件加载过程jvm内存模型JVM常用指令GC与调优调优前的基础概念1.吞吐量:用户代码时间/(用户代码执行时间垃圾回收时间)2.响应时间:STW越短,响应时间越好3.
Stella981 Stella981
3年前
JVM垃圾回收器GC的常用参数
GC常用参数年轻代最小堆最大堆栈空间XmnXmsXmxXssSystem.gc()不管用,避免因System.gc()调用导致的FGC,生产环境建议XX:DisableExplicitGC年轻代存活对象升代年龄,最大值15(CMS默认是6,Par