zoukankan      html  css  js  c++  java
  • JVM的参数说明

    Java虚拟机的参数说明

    Java运行时数据区域:

    线程共享区:方法区(永久区),堆

    线程私有区:虚拟机栈,本地方法栈,程序计数器

    JAVA_OPTS="-server -Duser.timezone=GMT+08

    -Xms1024m -Xmx1024m -XX:PermSize=1024m -Xmn512m

    -XX:MaxPermSize=1024m

    -Djava.awt.headless=true"

    堆内存分配
    JVM初始分配的堆内存由-Xms指定,默认是物理内存的1/64

    JVM最大分配的堆内存由-Xmx指定,默认是物理内存的1/4

    默认空余堆内存小于 40%时,JVM就会增大堆直到-Xmx的最大限制;

    空余堆内存大于70%时,JVM会减少堆直到-Xms的最小限制。

    因此服务器一般设置-Xms -Xmx相等以避免在每次GC 后调整堆的大小。
    非堆内存分配
    JVM使用-XX:PermSize设置非堆内存初始值,默认是物理内存的1/64

    XX:MaxPermSize设置最大非堆内存的大小,默认是物理内存的1/4


    jvm参数说明:

    -server:一定要作为第一个参数,在多个CPU时性能佳
    -
    Xms:java Heap初始大小。默认是物理内存的1/64。
    -
    Xmx:java heap最大值。建议均设为物理内存的一半。不可超过物理内存。
    -XX:PermSize:设定内存的永久保存区(即方法区)初始大小,缺省值为64M。-XX:MaxPermSize:设定内存的永久保存区最大大小,缺省值为64M。-XX:SurvivorRatio=2:生还者池的大小,默认是2,如果垃圾回收变成了瓶颈,您可以尝试定制生成池设置

    -XX:NewSize:新生成的池的初始大小。缺省值为2M。

    -XX:MaxNewSize:新生成的池的最大大小。缺省值为32M。

    -Xss:每个线程的Stack大小,而最佳值应该是128K,默认值是512k. 
    -verbose:gc 显示垃圾收集信息
    -Xloggc:gc.log 指定垃圾收集日志文件
    -
    Xmn:young generation的heap大小,一般设置为Xmx的3、4分之一
    -XX:+UseParNewGC :缩短minor收集的时间
    -XX:+UseConcMarkSweepGC :缩短major收集的时间此选项在Heap Size

    -XX:userParNewGC可用来设置并行收集【多CPU】
    -XX:ParallelGCThreads 可用来增加并行度【多CPU】
    -XX:UseParallelGC 设置后可以使用并行清除收集器【多CPU】


    方法区在物理上存在堆里,且是在堆的持久代里面;但在逻辑上方法区和堆是独立的。

    Java整个堆真正大小=年轻代大小 + 年老代大小 + 持久代大小

    一般分配堆的大小都是由年轻代大小 + 老年代大小构成的

    参数名称

    含义

    默认值


    -Xms

    初始堆大小

    物理内存的1/64(<1GB)

    空余堆内存小于40%时,JVM就会增大堆直到-Xmx的最大限制.

    -Xmx

    最大堆大小

    物理内存的1/4(<1GB)

    空余堆内存大于70%时,JVM会减少堆直到  -Xms的最小限制

    -Xmn

    年轻代大小


    增大年轻代后,将会减小年老代大小.此值对系统性能影响较大,Sun官方推荐配置为整个堆的3/8

    -XX:NewSize

    设置年轻代大小



    -XX:MaxNewSize

    年轻代最大值



    -XX:PermSize

    设置持久代初始值

    物理内存的1/64


    -XX:MaxPermSize

    设置持久代最大值

    物理内存的1/4


    -Xss

    每个线程的堆栈大小


    JDK5.0以后每个线程堆栈大小为1M.在相同物理内存下,减小这个值能生成更多的线程.但是操作系统是有限制的,不能无限生成,经验值在3000~5000左右应用,如果栈不是很深, 应该是128k够用的大的应用建议使用256k。这个选项对性能影响比较大,需要严格的测试。

    -XX:ThreadStackSize

    Thread  Stack Size



    -XX:NewRatio

    年轻代与年老代的比值(不含持久代)


    -XX:NewRatio=4表示年轻代与年老代所占比值为1:4,年轻代占整个堆栈的1/5
     Xms=Xmx并且设置了Xmn的情况下,该参数不需要进行设置。

    -XX:SurvivorRatio

    Eden区与一个Survivor区的大小比值


    设置为8,则两个Survivor区与一个Eden区的比值为2:8,一个Survivor区占整个年轻代的1/10

    -XX:LargePageSizeInBytes

    内存页的大小不可设置过大,  会影响Perm的大小


    =128m

    -XX:+UseFastAccessorMethods

    原始类型的快速优化



    -XX:+DisableExplicitGC

    关闭System.gc()


    这个参数需要严格的测试

    -XX:MaxTenuringThreshold

    垃圾最大年龄,对象晋升为老年代的阀值


    如果设置为0的话,则年轻代对象不经过Survivor区,直接进入年老代. 对于年老代比较多的应用,可以提高效率.如果将此值设置为一个较大值,则年轻代对象会在Survivor区进行多次复制,这样可以增加对象在年轻代的存活 时间,增加在年轻代即被回收的概率。

    -XX:+AggressiveOpts

    加快编译



    -XX:+UseBiasedLocking

    锁机制的性能改善



    -Xnoclassgc

    禁用垃圾回收



    -XX:SoftRefLRUPolicyMSPerMB

    每兆堆空闲空间中SoftReference的存活时间

    1s


    -XX:PretenureSizeThreshold

    对象超过多大是直接在老年代中分配

    0


    -XX:TLABWasteTargetPercent

    TLAB占eden区的百分比

    1%


    -XX:+CollectGen0First

    FullGC时是否先YGC

    false



    并行收集器相关参数

    -XX:+UseParallelGC

    Full  GC采用parallel MSC
     (此项待验证)


    虚拟机在Server状态下,使用Parallel Scavenge+Serial Old

    -XX:+UseParNewGC

    设置年轻代为并行收集


    ParNew+Serial Old收集器

    -XX:ParallelGCThreads

    并行收集器的线程数


    此值最好配置与处理器数目相等  同样适用于CMS

    -XX:+UseParallelOldGC

    年老代垃圾收集方式为并行收集(Parallel Compacting)


    使用

    ParallelScavenge+Parallel Old

    收集器


    -XX:MaxGCPauseMillis

    每次年轻代垃圾回收的最长时间(最大暂停时间)


    如果无法满足此时间,JVM会自动调整年轻代大小,以满足此值.

    -XX:+UseAdaptiveSizePolicy

    自动选择年轻代区大小和相应的Survivor区比例


    设置此选项后,并行收集器会自动选择年轻代区大小和相应的Survivor区比例,以达到目标系统规定的最低相应时间或者收集频率等,此值建议使用并行收集器时,一直打开.

    -XX:GCTimeRatio

    设置垃圾回收时间占程序运行时间的百分比


    公式为1/(1+n)

    -XX:+ScavengeBeforeFullGC

    Full  GC前调用YGC

    true


    CMS相关参数

    -XX:+UseConcMarkSweepGC

    使用CMS内存收集


    使用ParNew+CMS+Serial Old的收集器组合进行内存回收。

    -XX:+AggressiveHeap



    试图是使用大量的物理内存
    长时间大内存使用的优化,能检查计算资源(内存, 处理器数量)至少需要256MB内存大量的CPU/内存,

    -XX:CMSFullGCsBeforeCompaction

    多少次后进行内存压缩


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

    -XX:+CMSParallelRemarkEnabled

    降低标记停顿



    -XX+UseCMSCompactAtFullCollection

    在FULL GC的时候, 对年老代的压缩


    CMS是不会移动内存的, 因此,这个非常容易产生碎片导致内存不够用,因此,内存的压缩这个时候就会被启用。增加这个参数是个好习惯。可能会影响性能,但是可以消除碎片

    -XX:+UseCMSInitiatingOccupancyOnly

    使用手动定义初始化定义开始CMS收集


    禁止hostspot自行触发CMS GC

    -XX:CMSInitiatingOccupancyFraction=70

    使用cms作为垃圾回收
    使用70%后开始CMS收集

    92


    -XX:CMSInitiatingPermOccupancyFraction

    设置Perm Gen使用到达多少比率时触发

    92


    -XX:+CMSIncrementalMode

    设置为增量模式


    用于单CPU情况

    -XX:+CMSClassUnloadingEnabled




    辅助信息

    -XX:+PrintGC




    -XX:+PrintGCDetails




    -XX:+PrintGCTimeStamps




    -XX:+PrintGC:PrintGCTimeStamps



    可与-XX:+PrintGC -XX:+PrintGCDetails混合使用

    -XX:+PrintGCApplicationStoppedTime

    打印垃圾回收期间程序暂停的时间.可与上面混合使用



    -XX:+PrintGCApplicationConcurrentTime

    打印每次垃圾回收前,程序未中断的执行时间.可与上面混合使用



    -XX:+PrintHeapAtGC

    打印GC前后的详细堆栈信息



    -Xloggc:filename

    把相关日志信息记录到文件以便分析.
    与上面几个配合使用



    -XX:+PrintClassHistogram

    garbage  collects before printing the histogram.



    -XX:+PrintTLAB

    查看TLAB空间的使用情况



    XX:+PrintTenuringDistribution

    查看每次minor GC后新的存活周期的阈值



  • 相关阅读:
    2017-2018-1 20155323 《信息安全系统设计基础》第十三周学习总结
    2017-2018-1 20155323 实验五 通讯协议设计
    2017-2018-1 20155323 20155314   实验四  外设驱动程序设计
    2017-2018-1 20155323 《信息安全系统设计基础》第11周学习总结
    IPC学习
    2017-2018-1 20155323 《信息安全系统设计基础》第10周学习总结
    2017-2018-1 20155323 《信息安全系统设计基础》第9周学习总结
    2017-2018-1 20155323 实验三 实时系统
    20155320《信息安全系统设计基础》课程总结
    2017-2018-1 20155320 《信息安全系统设计基础》第十四周学习总结
  • 原文地址:https://www.cnblogs.com/daichangya/p/12958715.html
Copyright © 2011-2022 走看看