JVM GC性能方面的考虑(吞吐量和STW)
GC性能方面的考虑
对于GC的性能主要有2个方面的指标:吞吐量throughput(工作时间不算gc的时间占总的时间比)和暂停pause(gc发生时app对外显示的无法响应)。
- Total Heap
默认情况下,vm会增加/减少heap大小以维持free space在整个vm中占的比例,这个比例由MinHeapFreeRatio和MaxHeapFreeRatio指定。
一般而言,server端的app会有以下规则:
- 对vm分配尽可能多的memory;
- 将Xms和Xmx设为一样的值。如果虚拟机启动时设置使用的内存比较小,这个时候又需要初始化很多对象,虚拟机就必须重复地增加内存。
- 处理器核数增加,内存也跟着增大。
- 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)相关推荐
- JVM GC 日志详解
本文采用的JDK版本: java version "1.8.0_144" Java(TM) SE Runtime Environment (build 1.8.0_144-b01) ...
- Java虚拟机:常见JVM参数配置和GC性能优化
一.常见的JVM参数配置: 1.垃圾回收统计信息: -XX:+PrintGC 打印GC简要信息 -XX:+PrintGCDetails打印GC的详细信息 -XX:+PrintGCTimeSta ...
- jvm性能调优实战 - 34十万QPS的社交APP 如何优化GC性能提升3倍?
文章目录 Pre 案例背景 高并发查询导致对象快速进入老年代 老年代必然会触发频繁GC 优化前的线上系统JVM参数 频繁Full GC导致的大量内存碎片 如何进行优化? 思考题 Pre 这篇文章开始, ...
- JVM 内存管理、自带性能监测调优工具 (jstack、jstat)及 JVM GC 调优
0. 内存查看 获取可用内存大小: public static long getAvaliableMemory() {Runtime runtime = Runtime.getRuntime();re ...
- Kafka如何在千万级别时优化JVM GC问题?
点击上方蓝色"程序猿DD",选择"设为星标" 回复"资源"获取独家整理的学习资料! 来源 | https://www.toutiao.com ...
- 面试官问:上亿数据量下,Kafka是如何优化JVM GC问题的?
大家都知道Kafka是一个高吞吐的消息队列,是大数据场景首选的消息队列,这种场景就意味着发送单位时间消息的量会特别的大,那既然如此巨大的数据量,kafka是如何支撑起如此庞大的数据量的分发的呢? 今天 ...
- Kafka如何通过精妙的架构设计优化JVM GC问题
" 这篇文章,同样给大家聊一个硬核的技术知识,我们通过Kafka内核源码中的一些设计思想,来看你设计Kafka架构的技术大牛,是怎么优化JVM的GC问题的? 1.Kafka的客户端缓冲机制 ...
- JVM实用参数(六) 吞吐量收集器
原文链接 本文连接 译者:张军 校对:梁海舰 在实践中我们发现对于大多数的应用领域,评估一个垃圾收集(GC)算法如何根据如下两个标准: 吞吐量越高算法越好 暂停时间越短算法越好 首先让我们来明确垃圾 ...
- system.gc 性能_使用这些先进的GC技术提高应用程序性能
system.gc 性能 应用程序性能是我们关注的重点,垃圾收集优化是取得小而有意义的进步的好地方 自动化垃圾收集(与JIT HotSpot编译器一起)是JVM中最先进,最有价值的组件之一,但是许多开 ...
最新文章
- 智能体到底是什么?这里有一篇详细解读
- 使用golang求出A-Z的所有子集
- linux死机了怎么办?
- 嵌入式linux实时化技术,嵌入式Linux实时化技术
- 【机器学习】朴素贝叶斯代码练习
- 杭十四计算机教室,杭十四中学生做了个图书馆智能机器人
- StringBuilder详解
- 设计图与html 对比
- flash人物原地走路,Flash制作小人走路简单动画图文教程
- display none的元素重新展示如何撑开页面_关于元素的浮动你了解多少
- 20-linux下ElasticSearch.6.2.2集群安装与head、Kibana、X-Pack..插件的配置安装
- CocoaPods安装以及遇到的坑
- 使用 ESXCLI 命令从主机移除设备
- 解决由于一个软件限制策略的阻止,windows无法运行此程序cmd.reg
- 计算机网络实验视频word,(完整word版)《计算机网络与通信》实验.docx
- 持久层框架JPA与Mybatis该如何选型
- SQL的笛卡尔积简记
- Unity 查找重复图片资源以及引用 工具
- 计算机领域获奖感言,计算机编程比赛获奖感言
- 程序员能靠技术度过中年危机吗?
热门文章
- 【推荐系统】KDD2021推荐系统论文集锦
- 【Python入门】Python之OS模块39个常用函数详解
- Newtonsoft.Json使用
- mybatis写当天 当月的数据 时间段数据https://www.cnblogs.com/xzjf/p/7600533.html
- 快速生成树(RSTP)和传统生成树(STP)的区别(华为数通HCIE认证面试真题)...
- 虚拟化技术—docker容器—私有库篇
- 《Linux菜鸟入门》Linux网络管理
- ORACLE HANDBOOK系列之九:时间与时区(Time and Time Zone)
- 玩聚SR和FriendFeed的区别
- 最新代理服务器列表 2008-09-2