JVM GC性能方面的考虑(吞吐量和STW)
2023-09-14 09:01:56 时间
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%的空余)。
相关文章
- linux环境常用命令和java/jvm常用命令
- JVM深入学习笔记二:Java JIT编译
- 整理两个JVM博客集合,空闲时候可以看
- JDK JRE JVM的关系
- JVM性能调优监控工具
- JVM 第三篇:Java 类加载机制
- jvm 性能调优工具之 jstat
- jvm serializer 功能&性能基准测试
- ERROR: This jdwp native library will not work with this VM‘s version of JVMTI (11.0.0), it needs JVM
- jvm类加载之<clinit>() 与 <init>() 的区别
- JVM 参数含义:-Xms和-Xmx
- jvm一个线程的成本
- JVM 调优实战--jmap的使用以及内存溢出分析
- Atitit .jvm 虚拟机指令详细解释
- paip.提升性能---jvm java 工具使用.
- paip.提升性能---jvm java 工具使用.
- paip.提升性能----jvm参数调整.txt
- paip.提升性能----jvm参数调整.txt
- 【JVM与性能调优】JVM操作指令 以及 JVM指令助记符
- JVM——Java虚拟机详解
- JVM介绍
- JVM性能调优监控工具jps、jstack、jmap、jhat、jstat使用详解
- 011-JDK可视化监控工具-Jstat-资源和性能等监控、jmap-查看jvm参数设置以及内存使用情况、jinfo基础用法
- 掌握这几个JVM性能分析利器,故障排查不在话下
- 【JVM】JVM性能调优详解
- JVM监控及诊断工具-命令行篇
- 关于Java成员变量、局部变量、方法,在JVM的内存空间分配
- JVM GC原理及调优的基本思路