zoukankan      html  css  js  c++  java
  • GC的性能指标和内存容量配置原则

    一、GC性能指标
    吞吐量:应用花在非GC上的时间百分比
    GC负荷:与吞吐量相反,指应用花在GC上的时间百分比
    暂停时间:应用花在GC stop-the-world的时间
    GC频率
    反应速度:从一个对象变成垃圾到这个对象被回收的时间
    一个交互式的应用要求暂停时间越少越好,然而,一个非交互性的应用,当然是希望GC负荷越低越好
    一个试试系统对暂停时间和GC负荷的要求,都是越低越好
    一个嵌入式系统当然希望Footprint越小越好

    二、内存容量配置原则
    1、年轻代大小选择
    响应时间优先的应用:尽可能设大,直接接近系统的最低响应时间限制(根据实际情况选择),在此种情况下,年轻代手机发生的频率也是最小的
    同时,减少到达老年代的对象。
    吞吐量优先的应用:尽可能的设置大,可能达到Gbit的程度,因为响应时间没有要求,垃圾收集可以并行进行,一般8CPU以上的应用
    避免设置过小,当新生代设置过小时会导致:
    1、YGC次数更加频繁
    2、可能导致YGC对象直接进入老年代,如果此时老年代满了,会触发FGC
    2、老年代大小选择
    响应时间优先的应用:老年代使用并发收集器,所以其大小需要小心设置,一般要考虑并发回话率和会话持续时间等一些参数,如果堆设置小了,可能会造成内存碎片,
    高回收频率以及应用暂停而使用传统的标记清除方式;如果堆大了,则需要较长的收集时间,最优化的方案,一般需要参考以下数据获得:
    1、并发垃圾收集信息,持久代并发收集次数、传统GC信息、花在年轻代和老年代回收上的时间比例。
    2、吞吐量优先的应用:一般吞吐量优先的应用都有一个很大的年轻代和一个较小的老年代,原因是:可以尽可能回收掉大部分短期对象,减少中期的对象
    而老年代尽存放长期存活对象

  • 相关阅读:
    java7或java8新特性
    反射中,Class.forName和ClassLoader区别
    &和&&的区别
    JAVA时区问题总结
    索引失效原因及解决索引失效方法
    索引失效的7种情况
    MySQL Explain详解
    java switch
    java 生成注释文档
    spring 获取配置文件的值
  • 原文地址:https://www.cnblogs.com/fansik/p/8287771.html
Copyright © 2011-2022 走看看