`
xiangxingchina
  • 浏览: 506842 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

JVM 常见调优参数

 
阅读更多

@@内存调优@@

#初始堆大小   最大堆大小

-Xms(-XX:InitialHeapSize) 

#最大堆大小

-Xmx (-XX:MaxHeapSize)

 

#让JVM在发生内存溢出时自动的生成堆内存快照

-XX:+HeapDumpOnOutOfMemoryError

 

#内存溢出时 存放路径

#默认情况下,保存在JVM的启动目录下名为java_pid<pid>.hprof 的文件里

-XX:HeapDumpPath

 

#当内存溢出发生时执行操作

-XX:OnOutOfMemoryError ="sh ~/cleanup.sh"

 

#设置持久代大小

-XX:PermSize 

#设置持久代最大值

-XX:MaxPermSize

 

 

@@新生代垃圾回收@@

#指定新生代大小

-XX:NewSize and -XX:MaxNewSize

 

#设置新生代和老年代的相对大小

-XX:NewRatio

#-XX:NewRatio=3 指定老年代/新生代为3/1. 老年代占堆大小的 3/4 ,新生代占 1/4 .

 

 

#-XX:SurvivorRatio 指定伊甸园区(Eden)与幸存区大小比例

XX:SurvivorRatio=10 

表示伊甸园区(Eden)是幸存区To大小的10倍(也是幸存区From的10倍) 伊甸园区(Eden)占新生代大小的10/12

 

#指定JVM 在每次新生代GC时,输出幸存区中对象的年龄分布

-XX:+PrintTenuringDistribution

 

#指定JVM 在每次新生代GC时,输出幸存区中对象的年龄分布。

-XX:+PrintTenuringDistribution 

 

 

#设定老年代阀值  幸存区空间目标使用率

XX:MaxTenuringThreshold=10 

-XX:TargetSurvivorRatio=90 

设定老年代阀值的上限为10,幸存区空间目标使用率为90%。

 

 

@@吞吐量收集器@@

#该标志来激活串行垃圾收集器

-XX:+UseSerialGC

 

#选择垃圾收集器为并行收集器 [关注吞吐量]

-XX:+UseParallelGC

 

#选择垃圾收集器为并行收集器 [老年代 优于-XX:+UseParallelGC]

-XX:+UseParallelOldGC

 

吞吐量为垃圾回收时间与非垃圾回收时间的比值 

#-XX:GCTimeRatio=<N>来设定,公式为1/(1+N)

-XX:GCTimeRatio=<value>

 

 

最大暂停时间(具有优先级)

-XX:MaxGCPauseMillis

 

@@CMS收集器@@

HotSpot JVM的并发标记清理收集器(CMS收集器)的主要目标就是:低应用停顿时间。

CMS收集器为老年代垃圾回收提供了几乎完全并发的解决方案,年轻代仍然通过“stop-the-world”方法来进行收集

 

 

会面临两个主要的挑战,需调优:

1 堆碎片

  -- Full GC 处理

2 对象分配率高

  -- 老年代将没有足够的可用空间来容纳一个从年轻代提升过来的对象。

  -- 称为“并发模式失败”,并且JVM会执行堆碎片整理:触发Full GC。

 

 

#激活CMS收集器

-XX:+UseConcMarkSweepGC

 

#该标志激活年轻代使用多线程并行执行垃圾回收

-XX:UseParNewGC

[对于CMS收集器,年轻代GC算法和老年代GC算法是不同的]

 

#以多线程执行并发CMS

-XX:+CMSConcurrentMTEnabled

 

#定义并发CMS过程的线程数(需在生产或压测环境下 根据情况调优)

-XX:ConcGCThreads=<value>

#value=4意味着CMS周期的所有阶段都以4个线程来执行。

#默认 ConcGCThreads = (ParallelGCThreads + 3)/4

 

 

#老年代堆空间的使用率

-XX:CMSInitiatingOccupancyFraction

eg value=75意味着第一次CMS垃圾收集会在老年代被占用75%时被触发。

 

#收集器的增量模式(慎用)

-XX:+CMSIncrementalMode

增量模式经常暂停CMS过程,以便对应用程序线程作出完全的让步。因此,收集器将花更长的时间完成整个收集周期。

通过测试后发现正常CMS周期对应用程序线程干扰太大时,才应该使用增量模式。

 

#永久代也被包括进CMS垃圾回收

XX:+ExplicitGCInvokesConcurrentAndUnloadsClasses

保证当有系统GC调用时,永久代也被包括进CMS垃圾回收的范围内。

 

@@GC日志@@

#开启了简单GC日志模式

-XX:+PrintGC

无法从日志中判断是否GC将一些对象从young generation移到了old generation

 

#开启了详细GC日志模式

-XX:PrintGCDetails

 

#将时间和日期也加到GC日志中

-XX:+PrintGCTimeStamps

-XX:+PrintGCDateStamps

 

#缺省的GC日志时输出到终端的,使用-Xloggc:也可以输出到指定的文件

-Xloggc

分享到:
评论

相关推荐

    Jboss_JVM优化

    Jboss中间件下jvm参数调优配置 Jvm常见调优配置汇总

    JVM调优相关内容教程吐血整理干货.md

    JVM常见参数 堆栈相关 GC相关 其他 Java常用调优命令和工具 JVM调优相关 JVM常见参数 堆栈相关 -Xss 调整线程栈大小。 -Xms 设置堆内存初始化大小。 -Xmx / -XX:MaxHeapSize=? 设置堆内存最大值。 -Xmn / -XX:...

    JVM基础知识及性能调优.pdf

    介绍jvm的基本结构、重要概念、相关参数、jvm工具、垃圾回收算法、垃圾收集器、jvm常见错误及调优示例等相关内容。

    JVM规范--高手总结

    JVM规范--高手总结 Java相关 1 1.1Java定义 1 1.2Java的开发流程 1 1.3Java运行的原理 2 1.4半编译半解释 3 1.5平台无关性 4 JVM内存模型 4 2.1 JVM规范 5 2.2 Sun JVM 8 ...Java虚拟机(JVM)参数配置说明 30

    【原价2300!!】尚硅谷_互联网大厂高频重点面试题视频详细讲解

    JUC多线程并发、JVM和GC等目前大厂笔试中会考、面试中会问、工作中会用的高频难点知识。...下半场,逐步过渡到JVM和GC的知识,深度讲解多种常见OOM异常和JVM参数调优,以及串行并行并发G1等各种垃圾收集器的优化实践。

    2019年互联网大厂高频重点面试题(第2季)

    本期内容包括JUC多线程并发、JVM和GC等目前大厂笔试中会考、面试中会问、工作中会用的高频...下半场,逐步过渡到JVM和GC的知识,深度讲解多种常见OOM异常和JVM参数调优,以及串行并行并发G1等各种垃圾收集器的优化实践

    2019互联网面试题第2季.mmap

    尚硅谷周阳互联网大厂面试题(第2季) 脑图。包括JUC多线程并发、JVM和GC等目前大厂笔试中...下半场,逐步过渡到JVM和GC的知识,深度讲解多种常见OOM异常和JVM参数调优,以及串行并行并发G1等各种垃圾收集器的优化实践

    2019互联网大厂高频重点面试题 (第2季)脑图-完结.txt

    本人吐血整理,git部分未记录(尚硅谷周阳老师的视频脑图) 本期内容包括JUC多线程并发、JVM和GC等...下半场,逐步过渡到JVM和GC的知识,深度讲解多种常见OOM异常和JVM参数调优,以及串行并行并发G1等各种垃圾收集等

    尚硅谷_互联网大厂高频重点面试题(第2季).xmind

    下半场,逐步过渡到JVM和GC的知识,深度讲解多种常见OOM异常和JVM参数调优,以及串行并行并发G1等各种垃圾收集器的优化实践。 无论是进入职场不久的初级程序员,还是技术长期没有成长、正在吃老本走下坡路但还想涨...

    SpringBoot新手学习手册

    SpringBoot JVM参数调优 44 十一、 2.0版本新特性 45 以Java 8 为基准 45 内嵌容器包结构调整 45 Servlet-specific 的server properties调整 45 Actuator 默认映射 46 Spring Loaded不再支持 46 支持Quartz ...

    java面试常见基础(深层次,高级研发)

    3. JVM服务参数调优实战 14 3.1. 大型网站服务器案例 14 3.2. 内部集成构建服务器案例 15 4. 常量池在jvm的哪个空间里边? 17 5. jvm垃圾回收是什么时候触发的? 17 5.1. 那究竟GC为我们做了什么操作呢? 17 5.1.1. ...

    java8集合源码分析-geektime-java-week-training-camp:极客时间-Java每周训练营

    java8 集合源码分析 ...问题排查分析的常用手段、性能调优的最佳实践经验等; JVM 相关的常见面试问题必知必会、全面分析。 第二周:NIO 技术 - 构建高吞吐服务器的终极武器 同步/异步、阻塞/非阻塞、BIO

    达内java培训目录

    JavaSE核心 异常处理、多线程基础、IO系统、网络编程、Java反射机制、JVM性能调优(JVM内存结构剖析、GC分析及调优、JVM内存参数优化)、Java泛型、JDK新特性 熟练掌握JavaSE核心内容,特别是IO和多线程;...

    Kafka生产环境问题总结与性能优化实践

    首先,JVM参数的合理设置对Kafka的性能有着重大影响。例如,在32G内存的机器上,适当配置Kafka的堆大小和垃圾收集器可以大幅提高性能。消息的可靠性取决于acks的设置,它决定了消息发送者需要等待多少确认。acks=0...

    Java虚拟机

    增加了大量处理各种常见JVM问题的技巧和最佳实践;增加了若干与生产环境相结合的实战案例;对第1版中的错误和不足之处的修正;等等。 第2版不仅技术更新、内容更丰富,而且实战性更强。全书共分为五大部分,围绕...

Global site tag (gtag.js) - Google Analytics