zoukankan      html  css  js  c++  java
  • JVM基础和调优(六)

    JVM设置过程中的一般的规范

    在JVM的设置中,年轻代的设置比较的重要,因为年轻代存储空间分配的比较的块,可以说触发GC的机会比较的大。

    默认的情况下:-XX:NewRatio  默认为2 说明:年轻代(包括Eden和两个Survivor区)与年老代的比值(除去持久代),设置为2,则年轻代与年老代所占比值为1:2,年轻代占整个堆的1/3

    -Xmx:设置JVM最大可用内存。

    -Xms:设置JVM最小可用内存。此值可以设置与-Xmx相同,以避免每次垃圾回收完成后JVM重新分配内存。

    -Xmn:设置年轻代大小。整个堆大小=年轻代大小 + 年老代大小 + 持久代大小。持久代一般
    固定大小为64m,所以增大年轻代后,将会减小年老代大小。此值对系统性能影响较大,Sun官方推
    荐配置为整个堆的3/8。

    -XX:NewSize=n:设置年轻代大小
         -XX:NewRatio=n:设置年轻代和年老代的比值。如:为3,表示年轻代与年老代比值为1:3,年轻代占整个年轻代年老代和的1/4
         -XX:SurvivorRatio=n:年轻代中Eden区与两个Survivor区的比值。注意Survivor区有两个。如:3,表示Eden:Survivor=3:2,一个Survivor区占整个年轻代的1/5
         -XX:MaxPermSize=n:设置持久代大小

    吞吐量优先的并行收集器:

    -XX:+UseParallelGC:选择垃圾收集器为并行收集器。此配置仅对年轻代有效。即上述配置下,年轻
    代使用并发收集,而年老代仍旧使用串行收集。
         -XX:ParallelGCThreads=20:配置并行收集器的线程数,即:同时多少个线程一起进行垃圾回收。
    此值最好配置与处理器数目相等。

    -XX:+UseParallelOldGC:配置年老代垃圾收集方式为并行收集。JDK6.0支持对年老代并行收集。

    -XX:MaxGCPauseMillis=100:设置每次年轻代垃圾回收的最长时间,如果无法满足此时间,JVM会
    自动调整年轻代大小,以满足此值。

    响应时间优先的并发收集器:

    -XX:+UseConcMarkSweepGC:设置年老代为并发收集。测试中配置这个以后,-XX:NewRatio=4
    的配置失效了,原因不明。所以,此时年轻代大小最好用-Xmn设置。
         -XX:+UseParNewGC: 设置年轻代为并行收集。可与CMS收集同时使用。JDK5.0以上,JVM会根据
    系统配置自行设置,所以无需再设置此值。

    -XX:CMSFullGCsBeforeCompaction:由于并发收集器不对内存空间进行压缩、整理,所以运行一
    段时间以后会产生“碎片”,使得运行效率降低。此值设置运行多少次GC以后对内存空间进行压缩、
    整理。
        -XX:+UseCMSCompactAtFullCollection:打开对年老代的压缩。可能会影响性能,但是可以消除
    碎片

    辅助的信息:

    JVM提供了大量命令行参数,打印信息,供调试使用。主要有以下一些:

    -XX:+PrintGC
         -XX:+PrintGCDetails
         -XX:+PrintGCTimeStamps

    -Xloggc:filename

    调优总结
         年轻代大小选择
         响应时间优先的应用:尽可能设大,直到接近系统的最低响应时间限制(根据实际情况选择)。在此种情况下,年轻代收集发生的频率也是最小的。同时,减少到达年老代的对象。
         吞吐量优先的应用:尽可能的设置大,可能到达Gbit的程度。因为对响应时间没有要求,垃圾收集可以并行进行,一般适合8CPU以上的应用。

    年老代大小选择
         响应时间优先的应用:年老代使用并发收集器,所以其大小需要小心设置,一般要考虑并发会话率和会话持续时间等一些参数。如果堆设置小了,可以会造成内存碎片、高回收频率以及应用暂停而使用传统的标记清除方式;如果堆大了,则需要较长的收集时间。最优化的方案,一般需要参考以下数据获得:
          1. 并发垃圾收集信息
          2. 持久代并发收集次数

    3. 传统GC信息
         4. 花在年轻代和年老代回收上的时间比例减少,一般会提高应用的效率。

  • 相关阅读:
    【POJ 3162】 Walking Race (树形DP-求树上最长路径问题,+单调队列)
    【POJ 2152】 Fire (树形DP)
    【POJ 1741】 Tree (树的点分治)
    【POJ 2486】 Apple Tree (树形DP)
    【HDU 3810】 Magina (01背包,优先队列优化,并查集)
    【SGU 390】Tickets (数位DP)
    【SPOJ 2319】 BIGSEQ
    【SPOJ 1182】 SORTBIT
    【HDU 5456】 Matches Puzzle Game (数位DP)
    【HDU 3652】 B-number (数位DP)
  • 原文地址:https://www.cnblogs.com/zhailzh/p/4087824.html
Copyright © 2011-2022 走看看