zoukankan      html  css  js  c++  java
  • JVM参数配置及详解

    一、heap size
    1、 -Xmx
    指定jvm的最大堆大小,默认(MaxHeapFreeRatio参数可以调整)空余堆内存大于70%时,JVM就会减少堆直到-Xms的最小限制

    2、 -Xms
    指定jvm的初始堆大小
    默认(MinHeapFreeRatio参数可以调整)空余堆内存小于40%时,JVM就会增大堆直到-Xms的最大限制, 高并发应用,建议和-Xmx一样,防止因为内存收缩或突然增大带来的性能影响

    3、-Xmn
    指定jvm的最小堆大小
    此处的大小是(eden + 2 survivor space),与jmap -heap中显示的New gen是不同的
    整个堆大小=年轻代大小 + 年老代大小,增大年轻代后,将会减小年老代大小,此值对系统性能影响较大,Sun官方推荐配置为整个堆的3/8

    4、 -XX:NewSize
    设置年轻代大小

    5、 -XX:MaxNewSize
    设置年轻代最大值

    6、-XX:PermSize
    设置jvm中Perm Generation的初始值

    7、-XX:MaxPermSize
    设置Perm Generation的最大值

    8、-Xss
    指定线程栈大小
    一般小的应用,如果栈不是很深,应该是128k够用的,大的应用建议使用256k,这个参数对性能的影响比较大

    9、-XX:NewRatio
    年轻代(包括Eden和两个Survivor区)与年老代的比值(除去持久代)
    -XX:NewRatio=4表示年轻代与年老代所占比值为1:4,年轻代占整个堆栈的1/5

    10、-XX:SurvivorRatio
    指定New Generation中Eden Space与一个Survivor Space的heap size比例,-XX :SurvivorRatio=8,那么在总共New Generation为10m的情况下,Eden Space为8m

    11、-XX:MinHeapFreeRatio=<n>
    指定jvm heap在使用率小于n的情况下,heap进行收缩,Xmx==Xms的情况下无效,如-XX:MinHeapFreeRatio=30

    12、 -XX:MaxHeapFreeRatio=<n>
    指定jvm heap在使用率大于n的情况下,heap进行扩张,Xmx==Xms的情况下无效,如-XX:MaxHeapFreeRatio=70

    13、 -XX:LargePageSizeInBytes
    指定java heap分页页面大小,如:-XX:LargePageSizeInBytes=128m,
    内存页的大小不可设置过大,会影响Perm的大小

    14、-XX:+DisableExplicit GC
    含义是关闭 System.gc(),这个函数需要严格的测试

    15、-XX:MaxTenuringThreshold
    垃圾最大年龄,指定一个object在经历了n次young gc后转移到old generation区,默认值是15

    16、-XX:+UseBiasedLocking
    锁机制的性能改善

    17、-Xnoclassgc
    禁用垃圾回收

    18、-XX:PretenuringSizeThreshold
    对象超过多大是直接在老生代分配,单位字节,新生代采用Parallel Scavenge GC时无效,另一种直接在老生代分配的情况是大的数组对象,且数组中无外部引用对象

    19、-XX:TLABWasteTargetPercent
    TLAB在Eden区的百分比,默认值是1%

    20、-XX:+CollectGenOFirst
    FULLGC时是否先YGC,默认值是false

     

    二、garbage collector
    1、-XX:+UseParallelGC
    FULL GC采用parallel collector,并行收集

    2、 -XX:+UseParNewGC
    设置年轻代为并行收集,指定在New Generation使用 parallel collector,是Use Parallel GC的gc的升级版本,有更好的性能或者优点,可以和CMS gc一起使用

    3、-XX:ParallelGC Threads
    并行收集器的线程数,指定parallel collection时启动的thread个数,默认是物理processor的个数

    4、-XX:+UseParallelOldGC
    年老代垃圾收集方式为并行收集,指定在Old Generation使用parallel collector

    5、-XX:MaxGCPauseMillis
    每次年轻代垃圾回收的最长时间(最大暂停时间),如果无法满足此时间,JVM会自动调整年轻代大小,以满足此值

    6、 -XX:+UseAdaptiveSizePolicy,自动选择年轻代区大小和相应的Survivor区比例

    7、 -XX:GCTimeRatio
    设置垃圾回收时间占程序运行时间的百分比

    8、 -XX:+ScavengeBeforeFULLGC
    FULLGC前调用YGC,默认值为true

     

    三、CMS相关参数
    1、-XX:+UseConcMarkSweepGC
    使用CMS内存收集

    2、 -XX:+AggressiveHeap
    试图是使用大量的物理内存长时间大内存使用的优化,能检查计算资源,至少需要256MB内存,大量的CPU

    3、 -XX:+CMSFullGCsBeforeCompaction
    多少次后进行内存压缩,由于并发收集器不对内存空间进行压缩,整理,所以运行一段时间以后会产生“碎片”,使得运行效率降低,此值设置运行多少次GC以后对内存空间进行压缩,整理

    4、-XX:+CMSParallelRemarkEnabled
    降低标记停顿

    5、-XX:+UseCMSCompactAtFullCollection
    FULLGC的时候,对年老代的压缩,CMS是不会移动内存的,这个非常容易产生碎片,导致内存不够用,因此内存压缩这个时候就会被启用,增加这个参数是个好习惯,可能会影响性能,但是可以消除碎片

    6、-XX:+UseCMSInitiatingOccupancyOnly
    使用手动定义初始化定义开始CMS收集

    7、-XX:CMSInitiatingOccupancyFraction=70
    使用CMS作为垃圾回收,使用70%后开始CMS收集

    8、 -XX:CMSInitiatingPermOccupancyFraction
    设置Perm Generation使用到达多少比率时触发,默认值92%

    9、 -XX:+CMSIncrementalMode
    设置为增量模式,用于单CPU情况

     

    四、辅助信息
    1、-XX:+PrintGCDetails
    打印垃圾收集的情况

    2、-XX:+PrintGCTimeStamps
    打印垃圾收集的时间情况

    3、-XX:+PrintGCApplicationStoppedTime
    打印垃圾回收期间程序暂停的时间

    4、 -XX:+PrintGCApplicationConcurrentTime
    打印每次垃圾回收前,程序未中断的执行时间

    5、 -XX:+PrintHeapAtGC
    打印GC前后的详细堆栈信息

    6、-Xloggc:filename
    把相关日志信息记录到文件以便分析

    7、 -XX:+PrintTLAB
    查看TLAB空间的使用情况

    8、 -XX:+PrintTenuringDistribution
    查看每次minor GC后新的存活周期的阀值

    9、 -XX:+PrintClassHistogram
    garbage collects before printing the histogram

    10、 -XX:+UseFastAccessorMethods
    get,set方法转成本地代码

  • 相关阅读:
    C++指针笔记
    破解入门【OllyDebug爆破程序】
    c++类的定义《一》
    数组
    while循环语句的使用
    MS10-046漏洞测试
    For循环语句的使用
    C++Builder编写计算器
    C++自定义函数
    SQLyog简介
  • 原文地址:https://www.cnblogs.com/laosun0204/p/14507329.html
Copyright © 2011-2022 走看看