GC性能方面的考虑

​ 对于GC的性能主要有2个方面的指标:吞吐量throughput(工作时间不算gc的时间占总的时间比)和暂停pause(gc发生时app对外显示的无法响应)。

  1. Total Heap

​ 默认情况下,vm会增加/减少heap大小以维持free space在整个vm中占的比例,这个比例由MinHeapFreeRatio和MaxHeapFreeRatio指定。

一般而言,server端的app会有以下规则:

  • 对vm分配尽可能多的memory;
  • 将Xms和Xmx设为一样的值。如果虚拟机启动时设置使用的内存比较小,这个时候又需要初始化很多对象,虚拟机就必须重复地增加内存。
  • 处理器核数增加,内存也跟着增大。
  1. The Young Generation

​ 另外一个对于app流畅性运行影响的因素是young generation的大小。young generation越大,minor collection越少;但是在固定heap size情况下,更大的young generation就意味着小的tenured generation,就意味着更多的major collection(major collection会引发minor collection)。

​ NewRatio反映的是young和tenured generation的大小比例。NewSize和MaxNewSize反映的是young generation大小的下限和上限,将这两个值设为一样就固定了young generation的大小(同Xms和Xmx设为一样)。

​ 如果希望,SurvivorRatio也可以优化survivor的大小,不过这对于性能的影响不是很大。SurvivorRatio是eden和survior大小比例。

一般而言,server端的app会有以下规则:

  • 首先决定能分配给vm的最大的heap size,然后设定最佳的young generation的大小;
  • 如果heap size固定后,增加young generation的大小意味着减小tenured generation大小。让tenured generation在任何时候够大,能够容纳所有live的data(留10%-20%的空余)。

JVM GC性能方面的考虑(吞吐量和STW)相关推荐

  1. JVM GC 日志详解

    本文采用的JDK版本: java version "1.8.0_144" Java(TM) SE Runtime Environment (build 1.8.0_144-b01) ...

  2. Java虚拟机:常见JVM参数配置和GC性能优化

    一.常见的JVM参数配置: 1.垃圾回收统计信息: -XX:+PrintGC     打印GC简要信息 -XX:+PrintGCDetails打印GC的详细信息 -XX:+PrintGCTimeSta ...

  3. jvm性能调优实战 - 34十万QPS的社交APP 如何优化GC性能提升3倍?

    文章目录 Pre 案例背景 高并发查询导致对象快速进入老年代 老年代必然会触发频繁GC 优化前的线上系统JVM参数 频繁Full GC导致的大量内存碎片 如何进行优化? 思考题 Pre 这篇文章开始, ...

  4. JVM 内存管理、自带性能监测调优工具 (jstack、jstat)及 JVM GC 调优

    0. 内存查看 获取可用内存大小: public static long getAvaliableMemory() {Runtime runtime = Runtime.getRuntime();re ...

  5. Kafka如何在千万级别时优化JVM GC问题?

    点击上方蓝色"程序猿DD",选择"设为星标" 回复"资源"获取独家整理的学习资料! 来源 | https://www.toutiao.com ...

  6. 面试官问:上亿数据量下,Kafka是如何优化JVM GC问题的?

    大家都知道Kafka是一个高吞吐的消息队列,是大数据场景首选的消息队列,这种场景就意味着发送单位时间消息的量会特别的大,那既然如此巨大的数据量,kafka是如何支撑起如此庞大的数据量的分发的呢? 今天 ...

  7. Kafka如何通过精妙的架构设计优化JVM GC问题

    " 这篇文章,同样给大家聊一个硬核的技术知识,我们通过Kafka内核源码中的一些设计思想,来看你设计Kafka架构的技术大牛,是怎么优化JVM的GC问题的? 1.Kafka的客户端缓冲机制 ...

  8. JVM实用参数(六) 吞吐量收集器

    原文链接 本文连接 译者:张军  校对:梁海舰 在实践中我们发现对于大多数的应用领域,评估一个垃圾收集(GC)算法如何根据如下两个标准: 吞吐量越高算法越好 暂停时间越短算法越好 首先让我们来明确垃圾 ...

  9. system.gc 性能_使用这些先进的GC技术提高应用程序性能

    system.gc 性能 应用程序性能是我们关注的重点,垃圾收集优化是取得小而有意义的进步的好地方 自动化垃圾收集(与JIT HotSpot编译器一起)是JVM中最先进,最有价值的组件之一,但是许多开 ...

最新文章

  1. 智能体到底是什么?这里有一篇详细解读
  2. 使用golang求出A-Z的所有子集
  3. linux死机了怎么办?
  4. 嵌入式linux实时化技术,嵌入式Linux实时化技术
  5. 【机器学习】朴素贝叶斯代码练习
  6. 杭十四计算机教室,杭十四中学生做了个图书馆智能机器人
  7. StringBuilder详解
  8. 设计图与html 对比
  9. flash人物原地走路,Flash制作小人走路简单动画图文教程
  10. display none的元素重新展示如何撑开页面_关于元素的浮动你了解多少
  11. 20-linux下ElasticSearch.6.2.2集群安装与head、Kibana、X-Pack..插件的配置安装
  12. CocoaPods安装以及遇到的坑
  13. 使用 ESXCLI 命令从主机移除设备
  14. 解决由于一个软件限制策略的阻止,windows无法运行此程序cmd.reg
  15. 计算机网络实验视频word,(完整word版)《计算机网络与通信》实验.docx
  16. 持久层框架JPA与Mybatis该如何选型
  17. SQL的笛卡尔积简记
  18. Unity 查找重复图片资源以及引用 工具
  19. 计算机领域获奖感言,计算机编程比赛获奖感言
  20. 程序员能靠技术度过中年危机吗?

热门文章

  1. 【推荐系统】KDD2021推荐系统论文集锦
  2. 【Python入门】Python之OS模块39个常用函数详解
  3. Newtonsoft.Json使用
  4. mybatis写当天 当月的数据 时间段数据https://www.cnblogs.com/xzjf/p/7600533.html
  5. 快速生成树(RSTP)和传统生成树(STP)的区别(华为数通HCIE认证面试真题)...
  6. 虚拟化技术—docker容器—私有库篇
  7. 《Linux菜鸟入门》Linux网络管理
  8. ORACLE HANDBOOK系列之九:时间与时区(Time and Time Zone)
  9. 玩聚SR和FriendFeed的区别
  10. 最新代理服务器列表 2008-09-2