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

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

GC的性能指标和内存容量配置原则的更多相关文章

  1. .NET Core 配置GC工作模式与内存的影响

    .NET Core 配置GC工作模式与内存的影响 .NET Core GC 原文:https://blog.markvincze.com/troubleshooting-high-memory-usa ...

  2. JVM 的 Xms 和 Xmx 设置一样大小的内存容量

    4. [推荐]在线上生产环境,JVM 的 Xms 和 Xmx 设置一样大小的内存容量,避免在 GC 后调整堆 大小带来的压力. 现在,我们知道了Elasticsearch所公开的缓存和缓冲区,可以尝试 ...

  3. JVM内存调优原则及几种JVM内存调优方法

      转载,如需帮助,请联系wlgchun@163.com https://blog.csdn.net/LeegooWang/article/details/88696195 如何对JVM进行内存调优? ...

  4. JAVA 从GC日志分析堆内存 第七节

    JAVA 从GC日志分析堆内存 第七节   在上一章中,我们只设置了整个堆的内存大小.但是我们知道,堆又分为了新生代,年老代.他们之间的内存怎么分配呢?新生代又分为Eden和Survivor,他们的比 ...

  5. JVM学习02:GC垃圾回收和内存分配

    JVM学习02:GC垃圾回收和内存分配 写在前面:本系列分享主要参考资料是  周志明老师的<深入理解Java虚拟机>第二版. GC垃圾回收和内存分配知识要点Xmind梳理 案例分析1-(G ...

  6. JAVA JVM常见内存参数配置简析

    JVM常见内存参数配置简析   常见参数 -Xms .-Xmx.-XX:newSize.-XX:MaxnewSize.-Xmn(-XX:newSize.-XX:MaxnewSize) 简析 1.-Xm ...

  7. Java内存模型相关原则详解

    在<Java内存模型(JMM)详解>一文中我们已经讲到了Java内存模型的基本结构以及相关操作和规则.而Java内存模型又是围绕着在并发过程中如何处理原子性.可见性以及有序性这三个特征来构 ...

  8. 垃圾回收GC:.Net自己主动内存管理 上(一)内存分配

    垃圾回收GC:.Net自己主动内存管理 上(一)内存分配 垃圾回收GC:.Net自己主动内存管理 上(一)内存分配 垃圾回收GC:.Net自己主动内存管理 上(二)内存算法 垃圾回收GC:.Net自己 ...

  9. GC与显式内存管理

    C++复兴的话题至今已被鼓吹两年有余,Herb Sutter和Bjarne Stroustrup等大牛们也为C++带来了大步伐的革新.然而,从这两年的效果而言,C++的复兴并没有发生.一方面随着世界经 ...

随机推荐

  1. 微信小程序 - toptip效果

    在Page顶部下滑一个提示条 , 代码见 /mixins/UIComponent.js ,其中的self 可以认为是微信小程序的Page对象 效果: 默认2秒展示,上移动画隐藏 /** * 展示顶部 ...

  2. avrdude: stk500_getsync(): not in sync: resp=0x00

    avrdude: stk500_getsync(): not in sync: resp=0x00错误提示在arduino IDE中非常常见,这个错误代表着就是无法通过USB口与arduino控制板进 ...

  3. CRC16

    http://www.stmcu.org/chudonganjin/blog/12-08/230184_515e6.html 1.循环校验码(CRC码): 是数据通信领域中最常用的一种差错校验码,其特 ...

  4. dp - HNU 13404 The Imp

    The Imp Problem's Link: http://acm.hnu.cn/online/?action=problem&type=show&id=13404&cour ...

  5. 通过http输出流的方式从将html写入到Excel

    private void HtmlResponseToExecl() { //将数据(html)导入到Excel中 Response.Charset = "gb2312"; Res ...

  6. javascript不可用的问题探究

    昨天在Twitter上的一些有趣的讨论中, 我发现人们对于Web应用和站点对javascript的依赖普遍存在一种疑惑. 这种疑惑一直都存在, 而对我而言, 这个问题随着浏览技术的飞跃发展而集中爆发了 ...

  7. c# 扩展方法 奇思妙用 高级篇 九:OrderBy(string propertyName, bool desc)

    下面是 Queryable 类 中最常用的两个排序的扩展方法: 1 2 public static IOrderedQueryable<TSource> OrderBy<TSourc ...

  8. ionic 弹窗(alert, confirm)

    直接上代码吧,不解释了 控制器: angular.module('app.controllers', []) .controller('categoryCtrl', ['$scope', '$http ...

  9. shell脚本学习总结12--系统信号

    信号是Linux系统中一种进程通信机制.我们可以使用特定的信号来中断进程.每一种信号都同一个整数值相关联. kill命令可用来想进程发送信号,而trap命令用来处理所接收的信号. kill 列出所有可 ...

  10. tinker

    Ios前一段时间因为热更新被强制下架也算是最大闻了,但Android没关系,继续玩 首先tinker比Andfix好多了,版本现在都到1.7.11了,Andfix不支持yunos, 现在项目中没有用到 ...