`

JVM调优:GC 参数

 
阅读更多

参考:

一、    理论基础

参见《[Java性能剖析]Sun JVM内存管理和垃圾回收
二、    配置说明(重要部分加粗)
1.    Memory配置
1)    Heap Space配置

  • –Xmsn:初始堆空间,譬如-Xms512M
  • –Xmxn:最大堆空间,譬如-Xmx1024M,一般可指定这两个参数一致以避免在系统运行期间进行堆空间的调整
  • –XX:MinHeapFreeRatio=minimum(默认40):当代空闲空间在代空间中比例大于maximum时,自动减少代空间以小于该值(将内存归还给操作系统)
  • –XX:MaxHeapFreeRatio=maximum  (默认70):当代空闲在代空间中比例小于minimum时,自动增长代空间以大于该值(向操作系统请求内存分配)
  • -XX:YoungGenerationSizeIncrement=<Y>:Young Gen分配新内存时的增长比例,默认是20%(指符合MaxHeapFreeRatio时需要空间增长)
  • -XX:TenuredGenerationSizeIncrement=<T>:Tenured Gen空间分配新内存时的增长比例,默认是20%(指符合MaxHeapFreeRatio时需要空间增长)
  • -XX:AdaptiveSizeDecrementScaleFactor=<D>:空间缩小比例,如果空间增长比例是X,那么缩小比例是X/D(指符合MinHeapFreeRatio时需要空间缩小)

2)    Perm Gen配置

  • –XX:PermSize=n:默认持久区大小,譬如–XX:PermSize=32M(server模式下默认是16M)
  • –XX:MaxPermSize=n:持久区最大空间,譬如–XX:MaxPermSize=128M,如果设置地过小,会导致OutOfMemory(PermSpace)错误(server模式下默认是64M)

3)    自适应目标设定(默认情况下JVM回自动调整Young Gen与Tenured Gen的比例、Eden Space与Suvivor的比例来达到性能目标)

  • -XX:GCTimeLimit=time-limit :花费在GC上的时间上限,默认是98,当超过上限时,会抛出OutOfMemory(HeapSpace)的异常
  • -XX:GCHeapFreeLimit=space-limit :Heap空闲空间的最低比例下限,默认是2,当超过下限时,会抛出OutOfMemory(HeapSpace)的异常
  • -XX:MaxGCPauseMillis=nnn :最长的GC暂停时间,如果时间过长,会相应调整空间的大小(单位是毫秒)
  • -XX:GCTimeRatio=nnn :最大的GC占总可用时间的比例,如果时间过长,会相应调整空间的大小(花费在GC上的时间比例不超过1 / (1 + nnn))

GC的处理优先级是MaxGCPauseMillis最高,GCTimeRatio次之,其他的空间大小配置优先级最低
4)    Young Gen/Eden Space/Suvivor Space配置

  • -XX:-UseAdaptiveSizePolicy :不使用自适应自动调整空间大小,要使用后面的配置,必须先配置这个选项(可以使用-XX:+UseAdaptiveSizePolicy启动自适应自动调整空间大小)
  • –XX:NewSize=n:默认Young Gen的大小,譬如–XX:NewSize=400M
  • -XX:MaxNewSize=n:Young Gen的最大大小,譬如–XX:MaxNewSize=400M
  • –XX:NewRatio=n(默认server模式是8,client模式是2):Young Gen与Tenured Gen的比例
  • –XX:SurvivorRatio=n(默认是32):Eden Space与Survivor Space的比例,譬如–XX:SurvivorRatio=7,则每个Survivor Space占整个Young Gen的1/9(注意,有两个Survivor区)

5)    Thread Stack Space

  • -XX:ThreadStackSize=<value>或-Xssn<value>:设置线程的栈大小(字节数)(0表示默认) [Sparc: 512, Solaris Intel: 256, Sparc 64bit: 1024 all others 0] GC配置,一般使用默认值即可

2.GC配置
1)    Parallel and Parallel Compacting Collectors配置

  • -XX:+UseParallelGC :启用Parallel Collector
  • -XX:+UseParallelOldGC :启用Parallel Compacting Collector
  • -XX:ParallelGCThreads=<N> :并行垃圾回收线程数(默认不需调整,与服务器的内核数一致)

2)    CMS配置(这部分为了避免我的理解错误,直接给出E文说明)

  • -XX:+UseConcMarkSweepGC:启用CMS垃圾回收器
  • -XX:+CMSIncrementalMode :Enables incremental mode. Note that the concurrent collector must also be enabled (with -XX:+UseConcMarkSweepGC) for this option to work.(disabled)
  • -XX:+CMSIncrementalPacing :Enables automatic pacing. The incremental mode duty cycle is automatically adjusted based on statistics collected while the JVM is running. (enabled) (Enables automatic control of the amount of work the CMS collector is allowed to do before giving up the processor, based on application behavior.)
  • -XX:CMSIncrementalDutyCycle=<N> The percentage (0-100) of time between minor collections that the concurrent collector is allowed to run. If CMSIncrementalPacing is enabled, then this is just the initial value. (default 10)
  • -XX:CMSIncrementalDutyCycleMin=<N> The percentage (0-100) which is the lower bound on the duty cycle when CMSIncrementalPacing is enabled. 10 0 -XX:CMSIncrementalSafetyFactor=<N> The percentage (0-100) used to add conservatism when computing the duty cycle. 10 10 -XX:CMSIncrementalOffset=<N> The percentage (0-100) by which the incremental mode duty cycle is shifted to the right within the period between minor collections. (default 0)
  • -XX:CMSExpAvgFactor=<N> The percentage (0-100) used to weight the current sample when computing exponential averages for the concurrent collection statistics. (default 25)

 

分享到:
评论
1 楼 promiseloney 2017-02-13  
这个女程序员厉害了。。。

相关推荐

    JVM调优实践 ⼀、JVM调优准备⼯作 实验报告 pdf

    JVM调优实践 ⼀、JVM调优准备⼯作 1. 机器环境: 机器 CPU 内存 单机 4C 16G 2. 默认启动参数 JAVA_OPT="${JAVA_OPT} -server -Xms512m -Xmx512m -Xmn256 -XX:MetaspaceSiz e=128m -XX:MaxMetaspaceSize=320m" JAVA_...

    深入java虚拟机

    1. JVM调优 1.1 JVM调优总结(一)-一些概念 1.2 JVM调优总结(二)-一些概念 1.3 JVM调优总结(三)-基本垃圾回收算法 1.4 JVM调优总结(四)-垃圾回收面临的问题 1.5 JVM调优总结(五)-分代垃圾回收详述1 1.6 JVM...

    java学习之JVM调优相关说明

    其实听着JVM调优这个词有些高大上,但是等你真正了解了他的内在原理后,还是很容易的。再简单 JVM调优大致可分为如下: 解决JVM运行过程中的问题(主要就是内存溢出的问题) 优化JVM运行时的环境,提高运行速度与...

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

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

    jvm调优的一些相关参数

    应用出现OutOfMemory等内存异常,应用中有使用本地缓存且占用大量内存空间,系统吞吐量与响应性能不高或不降,Heap内存(老年代)持续上涨达到设置的最大内存值,Full GC ...JVM调优主要是针对垃圾收集器的收集性能优化

    Tomcat JVM的参数调优

    详细讲述了JVM参数的调优方法和步骤.并描述了GC垃圾回收机制的瓶颈,以及出现内存溢出的原因。

    JVM内存模型和性能调优:JVM调优工具详解及调优实战:jstat – 第38篇

    一、说明 jstat命令可以查看堆内存各部分的使用量...最常用,可以评估程序内存使用及GC压力整体情况。 指令:jstat -gc pid 指令:jstat -gc pid [interval] [count] 了解本专栏 订阅专栏 解锁全文 作者:悟纤

    java查看sun包源码-monitor:java生产环境内存调优(包括jvm参数类型,JVM的参数类型jinfo&jps(参数和进程查看)j

    jvm参数类型:alien: jinfo & jps(参数和进程查看):alien: jstat(类加载、垃圾收集、JIT 编译):alien: jmap+MAT(内存溢出):alien: jstack(线程、死循环、死锁):alien: JVisualVM(本地和远程可视化监控:alien: 使用 ...

    resin-jvm 调优

    JNLP中参数:initial-heap-size和max-heap-size 这可以在framework的RequestManager中生成JNLP文件时加入上述参数,但是这些值是要求根据客户机的硬件状态变化的(如客户机的内存大小等)。建议这两个参数值设为...

    JDK9GC-cheatsheet.pdf

    JDK9 GC调优秘籍 JDK9 GC cheatsheet, 一张PDF包含所有的...为了方便大家的参考,特意将JDK9中的GC参数总结成了一张PDF,这个PDF比之前总结的JDK8的PDF在排版,颜色和内容准确性上面又有了非常大的提升,欢迎大家下载。

    JVM内存管理及GC原理调优实战

    JVM调优是一个系统而又复杂的过程,由于Java虚拟机自动管理内存,在大多数情况下,我们基本上不用去调整JVM内存分配,因为一些初始化参数已经可以保证应用服务正常稳定地工作。但是当有性能问题的时候该怎么去调优,...

    develop guide

    介绍如何对JVM进行调优。包括代码调优,JVM参数调优,GC调优等

    JVM问题分析调优经验

    一、前言 JVM 性能优化步骤: 预估系统参数 压测后,调整JVM 参数 线上系统监控和优化 统一的JVM 参数模板 线上频繁 Full GC 的表现: 机器CPU 负载过高 频繁Full GC 报警

    深入JVM内核 - 原理、诊断与优化

    Serial ParNew等GC参数 GC的参数搭配实例分析 介绍GC的设置参数,并分析相关的案列。 第六课 类装载 class装载流程 ClassLoader模式 ClassLoader的使用实例分析 热替换例子 详细介绍ClassLoader的原理和应用。分析...

    java面试题.docx

    常用的 JVM 调优的参数都有哪些? -Xms2g:初始化推大小为 2g; -Xmx2g:堆最大内存为 2g; -XX:NewRatio=4:设置年轻的和老年代的内存比例为 1:4; -XX:SurvivorRatio=8:设置新生代 Eden 和 Survivor 比例为 8:2;...

    JDK8GC-cheatsheet.pdf

    这么多参数带给我们的是对JVM的细粒度的控制,但是并不是所有的参数都需要我们自己去调节的,我们需要关注的是一些最常用的,对性能影响比较大的GC参数即可。 为了更好的让大家理解JDK8中 GC的调优的秘籍,这里特意...

    【批量下载】jvisualvm安装Visual GC插件等.zip

    GC调优步骤: 1、打印GC日志 -XX:+PrintGCDetails -XX:+PrintGCTimeStamps -XX:+PrintGCDateStamps -Xloggc:./gc.log Tomcat则直接加在JAVA_OPTS变量里 2、分析日志得到关键性指标 3、分析GC原因,调优JVM参数

    JVM-Java虚拟机

    2JVM参数;3,垃圾回收原理;4,垃圾回收器的使用;5,调优实战案例 导语:平时我们所说的JVM广义上指的是一种规范。狭义上的是JDK中的JVM虚拟机。JVM的实现是由各个厂商来做的。比如现在流传最广泛的是hotspot。...

Global site tag (gtag.js) - Google Analytics