JVM调优原则

调优目标

  1. 将进入老年代的对象数量降到最低

  2. 减少 Full GC 的执行时间

在同样场景下,采用多个机器上进行参数调整后的比较验证,将验证能够提高性能的参数应用到最终所有服务器上。

一般常规

满足下列不需要优化

Minor GC执行时间不到50ms;
Minor GC执行不频繁,约10秒一次;
Full GC执行时间不到1s;
Full GC执行频率不算频繁,不低于10分钟1次;

基本思想

针对JVM堆的设置

一般可以通过-Xms -Xmx限定其最小、最大值,为了防止垃圾收集器在最小、最大之间收缩堆而产生额外的时间,通常把最大、最小设置为相同的值;

年轻代和年老代

根据默认的比例(1:2)分配堆内存, 可以通过调整二者之间的比率NewRadio来调整二者之间的大小。

如年轻代,通过 -XX:newSize -XX:MaxNewSize来设置其绝对大小。同样,为了防止年轻代的堆收缩,我们通常会把-XX:newSize -XX:MaxNewSize设置为同样大小。

年轻代和年老代设置多大才参考:

  1. 更大的年轻代必然导致更小的年老代,大的年轻代会延长普通GC的周期,但会增加每次GC的时间,小的年老代会导致更频繁的Full GC。

  2. 更小的年轻代必然导致更大年老代,小的年轻代会导致普通GC很频繁,但每次的GC时间会更短,大的年老代会减少Full GC的频率。

如何选择应该依赖应用程序对象生命周期的分布情况:如果应用存在大量的临时对象,应该选择更大的年轻代;如果存在相对较多的持久对象,年老代应该适当增大。但很多应用都没有这样明显的特性。

在抉择时应该根据以下两点:

  1. 本着Full GC尽量少的原则,让年老代尽量缓存常用对象,JVM的默认比例1:2也是这个道理 。

  2. 通过观察应用一段时间,看其他在峰值时年老代会占多少内存,在不影响Full GC的前提下,根据实际情况加大年轻代,比如可以把比例控制在1:1。但应该给年老代至少预留1/3的增长空间。

配置较好的机器

比如多核、大内存机器,可以为年老代选择并行收集算法:-XX:+UseParallelOldGC 。

线程堆栈的设置

每个线程默认会开启1M的堆栈,用于存放栈帧、调用参数、局部变量等,对大多数应用而言这个默认值太了,一般256K就足用。

理论上,在内存不变的情况下,减少每个线程的堆栈,可以产生更多的线程,但这实际上还受限于操作系统。

如果你觉得文章不错,文末的赞 ? 又回来啦,记得给我「点赞」和「在看」哦~

jvm 堆 比例_JVM调优原则相关推荐

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

    JVM内存调优原则及几种JVM内存调优方法 1.堆大小设置. 2.回收器选择. 1.在对JVM内存调优的时候不能只看操作系统级别Java进程所占用的内存,这个数值不能准确的反应堆内存的真实占用情况,因 ...

  2. JVM之堆Heap参数调优入门

    JVM之堆Heap参数调优入门 目录: JVM体系结构概览 JVM之堆Heap参数调优入门 2.1 java7和 java8堆结构图 2.2 堆内存调优简介 1. JVM体系结构概览 2. JVM之堆 ...

  3. jvm原理及性能调优系列(jvm调优)

    jvm原理及性能调优系列(jvm调优) JVM设置: 1.设置合适的最大堆内存(新生代和老生代的最大和值)和最小堆内存(jvm启动时占用的操作系统内存大小),及设置好堆的比例分配. 2.设置合适的新生 ...

  4. JVM整体架构与调优参数说明

    本文来说下JVM整体架构与调优参数说明 文章目录 概述 JVM的分类 JVM的构成 方法区(元空间) 堆 栈 本地方法栈 程序计数器 JVM调优参数 本文小结 概述 很多小伙伴都认为JVM的知识很难, ...

  5. JVM原理讲解和调优

    一.什么是JVM JVM是Java Virtual Machine(Java虚拟机)的缩写,JVM是一种用于计算设备的规范,它是一个虚构出来的计算机,是通过在实际的计算机上仿真模拟各种计算机功能来实现 ...

  6. JVM原理及性能调优

    注明:转载文章.好记性不如烂笔头呀~ 一.什么是JVM JVM是Java Virtual Machine(Java虚拟机)的缩写,JVM是一种用于计算设备的规范,它是一个虚构出来的计算机,是通过在实际 ...

  7. 史上最全JVM整体架构和调优参数说明,带你彻底理解JVM整体架构与调优技巧

    大家好,我是冰河~~ 从今天开始,我们正式开始<架构师进阶系列>技术文的更新,在<架构师进阶系列>中,我们首先一起来探讨有关JVM的知识. 很多小伙伴都认为JVM的知识很难,很 ...

  8. JVM常用参数以及调优实践

    JVM常用参数选项 jvm 可配置的参数选项可以参考 Oracle 官方网站给出的相关信息:http://www.oracle.com/technetwork/java/javase/tech/vmo ...

  9. 深入理解JVM虚拟机10:JVM常用参数以及调优实践

    本文转自[JVM常用参数以及调优实践](https://blog.csdn.net/a724888/article/details/78367780) JVM常用参数选项 jvm 可配置的参数选项可以 ...

最新文章

  1. OpenCV_图像平滑
  2. 动态调试android, ddmsida
  3. java小数强制转换,Java中的强制类型转换 大数转小数
  4. 7、play中的文件上传
  5. JS 对象(Object)和字符串(String)互转
  6. ☆用Python实现ACM各大输入输出格式
  7. thinkphp-page
  8. 1.Docket 安装简介
  9. Ubuntu上安装gcc
  10. python银行管理系统框架_基于Python的网上银行综合管理系统的设计与实现
  11. HTML5 高频面试题!!!
  12. 写出一个程序,接受一个正浮点数值,输出该数值的近似整数值。如果小数点后数值大于等于5,向上取整;小于5,则向下取整。
  13. 公网Kamailio 代理 freeswitch 和做 sbc
  14. 方舟原始恐惧mod生物代码_《暗黑地牢》《方块方舟》周末免费试玩,多款游戏历史新低特惠...
  15. 元宇宙:从现实到虚无祛魅的产物|广州华锐互动
  16. 7 轮面试后,还是挂了 | Google 中国面经分享
  17. 中文字号和磅数的联系
  18. 秋招面试题系列- - -Java工程师(十一)
  19. OpenCV - C++ -图像处理 //使用
  20. Oracle EBS专业术语与名词解释

热门文章

  1. 试题集—— 算法提高 学霸的迷宫
  2. Shell 脚本知识回顾 (四) —— Shell 命令及Shell 相关语句
  3. Linux下find命令使用
  4. 学习《css世界》笔记之使用css实现凹凸效果
  5. js获取当前日期并格式化(多种格式)
  6. USB基础与重点梳理—关于USB的问题
  7. Android卷一全文 第一章 阅读前的准备工作
  8. 前端学习(3310):redux的state hook对象
  9. react学习(38)----react是什么
  10. [html] 使用canvas制作一个印章