JVM-JVM调优基础(理论)

这篇具有很好参考价值的文章主要介绍了JVM-JVM调优基础(理论)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

申明:文章内容是本人学习极客时间课程所写,作为笔记进行记录,文字和图片基本来源于课程资料,在某些地方会插入一点自己的理解,未用于商业用途,侵删。
原资料地址:课程资料

JVM参数

标准参数

定义:稳定的参数不会随着Java版本的变化而变化。通常以 短横线开头,可以通过java -help 查看

java -version

JVM-JVM调优基础(理论),JVM虚拟机,jvm

非标准参数

定义:以-X开头,是标准参数的扩展。表示在将来的JVM版本中可能会发生改变,但是这类以-X开始的参数变化比较小。通过java -X 查看
JVM-JVM调优基础(理论),JVM虚拟机,jvm
比较常见的非标准参数:

  1. -Xms堆最小值:默认值是总内存/64(且小于1G),默认情况下,当堆中可用内存小于40%(-XX: MinHeapFreeRatio调整)时,堆内存会开始增加,一直增加到-Xmx大小。
  2. -Xmx堆最大值:默认值是总内存/64(且小于1G),如果Xms和Xmx都不设置,则两者大小会相同,默认情况下,当堆中可用内存大于70%时,堆内存会开始减少,一直减小到-Xms的大小;
  3. -Xmn新生代内存:默认是整堆的1/3,包括Eden区和两个Survivor区的总和,写法如: -Xmn1024,-Xmn1024k,-Xmn1024m,-Xmn1g 。新生代按整堆的比例分配,所以,此值不建议设置!
  4. -Xss线程栈内存:默认1M,一般来说是不需要改的。
  5. 打印GC日志·-Xloggc:file与-verbose:gc功能类似,只是将每次GC事件的相关情况记录到一个文件中。
不稳定参数

这也是非标准化参数,相对来说不稳定,随着JVM版本的变化可能会发生变化,主要用于JVM调优和debug。
不稳定参数以-XX 开头,此类参数的设置很容易引起JVM 性能上的差异,使JVM存在极大的不稳定性。如果此类参数设置合理将大大提高JVM的性能及稳定性。
不稳定参数分为三类:

  • 性能参数:用于JVM的性能调优和内存分配控制,如内存大小的设置;
  • 行为参数:用于改变JVM的基础行为,如GC的方式和算法的选择;
  • 调试参数:用于监控、打印、输出jvm的信息;

不稳定参数语法规则:

  1. 布尔类型参数值:
    -XX:+
    '+'表示启用该选项
    -XX:-
    '-'表示关闭该选项
    示例:-XX:+UseG1GC:表示启用G1垃圾收集器
  2. 数字类型参数值:
    -XX:
    =给选项设置一个数字类型值,可跟随单位,例如:'m’或’M’表示兆字节;'k’或’K’千字节;'g’或’G’千兆字节。32K与32768是相同大小的。
    示例:-XX:MaxGCPauseMillis=500 :表示设置GC的最大停顿时间是500ms
  3. 字符串类型参数值:
    -XX:
    =给选项设置一个字符串类型值,通常用于指定一个文件、路径或一系列命令列表。
    示例:-XX:HeapDumpPath=./dump.core
    常用的不稳定参数:
    -XX:+UseSerialGC 配置串行收集器
    -XX:+UseParallelGC 配置PS并行收集器
    -XX:+UseParallelOldGC 配置PO并行收集器
    -XX:+UseParNewGC 配置ParNew并行收集器
    -XX:+UseConcMarkSweepGC 配置CMS并行收集器
    -XX:+UseG1GC 配置G1并行收集器
    -XX:+PrintGCDetails 配置开启GC日志打印
    -XX:+PrintGCTimeStamps 配置开启打印GC时间戳
    -XX:+PrintGCDateStamps 配置开启打印GC日期
    -XX:+PrintHeapAtGC 配置开启在GC时,打印堆内存信息

什么时候进行JVM调优?

  1. 系统吞吐量下降与响应延迟(P99);
  2. Heap内存(老年代)持续上涨至出现OOM;
  3. Full GC 次数频繁;
  4. GC 停顿过长(超过1秒);
  5. 应用出现OutOfMemory 等内存异常;
  6. 应用中有使用本地缓存且占用大量内存空间;

调优调什么?
内存分配 + 垃圾回收

  • 合理使用堆内存
  • GC高效回收占用的内存的垃圾对象
  • GC高效释放掉内存空间

JVM实践调优主要步骤
第一步:监控分析GC日志
第二步:判断JVM问题:
如果各项参数设置合理,系统没有超时日志出现,GC频率不高,GC耗时不高,那么没有必要进行GC优化
如果GC时间超过1秒,或者频繁GC,则必须优化。
第三步:确定调优目标
第四步:调整参数
调优一般是从满足程序的内存使用需求开始,之后是时间延迟需求,最后才是吞吐量要求,要基于这个步骤来不断优化,每一个步骤都是进行下一步的基础,不可逆行之。
第五步:对比调优前后差距
第六步:重复:1、2、3、4、5步骤
找到最佳JVM参数设置
第七步:应用JVM参数到应用服务器:
找到最合适的参数,将这些参数灰度发布一部分机器,观察一段时间。
如果,观察结果可以验证方案的价值,则进行全量发布!

这是一些调优的基础知识和方法论,真正的能够调优还是要结合实际情况去练习,后续会单独写文章来记录调优的案例。文章来源地址https://www.toymoban.com/news/detail-827812.html

到了这里,关于JVM-JVM调优基础(理论)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • JVM基础(12)——G1调优

    作者简介:大家好,我是smart哥,前中兴通讯、美团架构师,现某互联网公司CTO 联系qq:184480602,加我进群,大家一起学习,一起进步,一起对抗互联网寒冬 学习必须往深处挖,挖的越深,基础越扎实! 阶段1、深入多线程 阶段2、深入多线程设计模式 阶段3、深入juc源码解析

    2024年01月22日
    浏览(35)
  • 3.Java面试题—JVM基础、内存管理、垃圾回收、JVM 调优

    一篇文章掌握整个JVM,JVM超详细解析!!! JVM (Java虚拟机) 是运行 Java 字节码 的 虚拟机 。 JVM 针对 不同系统 有 特定实现 ( Windows 、 Linux 等),目的是 同样的代码 在 不同平台 能运行出 相同的结果 。 Java 语言 要经过 编译 和 解释 两个步骤: 编译 :通过 编译器 将 代码 一

    2024年02月15日
    浏览(38)
  • JVM基础(10)——老年代调优

    作者简介:大家好,我是smart哥,前中兴通讯、美团架构师,现某互联网公司CTO 联系qq:184480602,加我进群,大家一起学习,一起进步,一起对抗互联网寒冬 学习必须往深处挖,挖的越深,基础越扎实! 阶段1、深入多线程 阶段2、深入多线程设计模式 阶段3、深入juc源码解析

    2024年01月20日
    浏览(30)
  • JVM基础(9)——新生代调优

    作者简介:大家好,我是smart哥,前中兴通讯、美团架构师,现某互联网公司CTO 联系qq:184480602,加我进群,大家一起学习,一起进步,一起对抗互联网寒冬 学习必须往深处挖,挖的越深,基础越扎实! 阶段1、深入多线程 阶段2、深入多线程设计模式 阶段3、深入juc源码解析

    2024年01月16日
    浏览(41)
  • TOMCAT部署及优化(Tomcat配置文件参数优化,Java虚拟机(JVM)调优)

    TOMCAT tomcat :是一个开放源代码的web应用服务器,基于java代码开发的。也可以理解为tomacat就是处理动态请求和基于java代码的页面开发。可以在html当中写入java代码,tomcat可以解析html页面当中的java,执行动态请求,动态页面。 tomcat是机制存在一些问题,如果不对tomcat进行优化

    2024年02月13日
    浏览(21)
  • 【JVM故障问题排查心得】「Java技术体系方向」Java虚拟机内存优化之虚拟机参数调优原理介绍

    本文主要针对于综合层面上进行分析JVM优化方案总结和列举调优参数计划。主要包含: 调优之逃逸分析(栈上分配) 调优之线程局部缓存(TLAB) 调优之G1回收器 -XX:+DoEscapeAnalysis 逃逸分析(Escape Analysis) 逃逸分析的基本行为就是分析对象动态作用域:当一个对象在方法中被定

    2024年01月25日
    浏览(47)
  • JVM 虚拟机 ---> JVM 基础概念

    一、Java 跨平台 Java是一种 可跨平台 的编程语言,我们通常把 CPU 处理器与操作系统构成的计算机系统整体成为叫 平台 不同的 CPU ,差异主要在底层指令集不同,指令集分为精简指令集( RISC )和复杂指令集( CISC )。每个 CPU 都有自己的特定指令集 **指令集:**是CPU中用来计

    2024年02月09日
    浏览(32)
  • JVM 8 调优指南:如何进行JVM调优,JVM调优参数

    这篇文章将详细介绍如何进行JVM 8调优,包括JVM 8调优参数及其应用。此外,我将提供12个实用的代码示例,每个示例都会结合JVM启动参数和Java代码。 本文已收录于,我的技术网站 ddkk.com,有大厂完整面经,工作技术,架构师成长之路,等经验分享 JVM调优是指通过调整Java虚拟

    2024年01月21日
    浏览(43)
  • JVM 11 调优指南:如何进行JVM调优,JVM调优参数

    JVM 11的优化指南:如何进行JVM调优,以及JVM调优参数有哪些”这篇文章将包含JVM 11调优的核心概念、重要性、调优参数,并提供12个实用的代码示例,每个示例都会结合JVM调优参数和Java代码 本文已收录于,我的技术网站 ddkk.com,有大厂完整面经,工作技术,架构师成长之路,

    2024年01月16日
    浏览(43)
  • JVM 17 调优指南:如何进行JVM调优,JVM调优参数

    在这篇文章中,我会详细介绍JVM调优的概念、重要性和具体的JVM调优参数。此外,我将提供12个实用的代码示例,每个示例都会包含JVM调优参数和相应的Java代码。 本文已收录于,我的技术网站 ddkk.com,有大厂完整面经,工作技术,架构师成长之路,等经验分享 JVM调优是调整

    2024年02月02日
    浏览(35)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包