广告
返回顶部
首页 > 资讯 > 后端开发 > Python >详解JVM中的GC调优
  • 288
分享到

详解JVM中的GC调优

2024-04-02 19:04:59 288人浏览 独家记忆

Python 官方文档:入门教程 => 点击学习

摘要

目录那些GC的默认值GC的选择GC的最大线程个数初始化heap size最大的heap size分层编译技术我们到底要什么最大暂停时间吞吐率那些GC的默认值 其实GC或者说JVM的参

那些GC的默认值

其实GC或者说JVM的参数非常非常的多,有控制内存使用的:

有控制JIT的:

有控制分代比例的,也有控制GC并发的:

当然,大部分的参数其实并不需要我们自行去调整,JVM会很好的动态帮我们设置这些变量的值。

如果我们不去设置这些值,那么对GC性能比较有影响的参数和他们的默认值有哪些呢?

GC的选择

我们知道JVM中的GC有很多种,不同的GC选择对java程序的性能影响还是比较大的。

jdk9之后,G1已经是默认的垃圾回收器了。

我们看一下G1的调优参数。

G1是基于分代技术的,其实JVM还在开发一些不再基于分代技术的GC算法,比如ZGC,我们可以根据需要来选择适合我们的GC算法。

GC的最大线程个数

GC是由专门的GC线程来执行的,并不是说GC线程越多越好,这个默认线程的最大值是由heap size和可用的CPU资源动态决定的。

当然你可以使用下面两个选项来修改GC的线程:

 -XX:ParallelGCThreads=threads 设置STW的垃圾收集线程数

 -XX:ConcGCThreads = n 设置并行标记线程的数量

一般情况下ConcGCThreads可以设置为ParallelGCThreads的1/4。

初始化heap size

默认情况下加初始化的heap size是物理内存的1/64。

你可以使用

 -XX:InitialHeapSize=size

来重新设置。

最大的heap size

默认情况下最大的heap size是物理内存的1/4。

你可以使用:

-XX:MaxHeapSize

来重新设置。

分层编译技术

默认情况下分层编译技术是开启的。你可以使用:

-XX:-TieredCompilation

来关闭分层编译。如果启用了分层编译,那么可能需要关注JIT中的C1和C2编译器带来的影响。

我们到底要什么

java程序在运行过程中,会发生很多次GC,那么我们其实是有两种统计口径:

1.平均每次GC执行导致程序暂停的时间(Maximum Pause-Time Goal)。

2.总的花费在GC上的时间和应用执行时间的比例(Throughput Goal)。

最大暂停时间

单次GC的暂停时间是一个统计平均值,因为单次GC的时间其实是不可控的,但是取了平均值,GC就可以动态去调整heap的大小,或者其他的一些GC参数,从而保证每次GC的时间不会超过这个平均值。

我们可以通过设置:

-XX:MaxGCPauseMillis=<nnn>

来控制这个值。

不管怎么设置这个参数,总体需要被GC的对象肯定是固定的,如果单次GC暂停时间比较短,可能会需要减少heap size的大小,那么回收的对象也比较少。这样就会导致GC的频率增加。从而导致GC的总时间增加,影响程序的Throughput。

吞吐率

吞吐率是由花费在GC上的时间和应用程序上的时间比率来决定的。

我们可以通过设置:

-XX:GCTimeRatio=nnn

来控制。

如果没有达到throughput的目标,那么GC可能会去增加heap size,从而减少GC的执行频率。但是这样会增加单次的Maximum Pause-Time。

如果throughput和maximum pause-time的参数同时都设置的话,JVM会去尝试去动态减少heap size的大小,直到其中的一个目标不能满足为止。

相对而言,G1更加偏重于最大暂停时间,而ZGC更加偏重于吞吐率。

以上就是详解JVM中的GC调优的详细内容,更多关于JVM中的GC调优的资料请关注编程网其它相关文章!

--结束END--

本文标题: 详解JVM中的GC调优

本文链接: https://www.lsjlt.com/news/127472.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 详解JVM中的GC调优
    目录那些GC的默认值GC的选择GC的最大线程个数初始化heap size最大的heap size分层编译技术我们到底要什么最大暂停时间吞吐率那些GC的默认值 其实GC或者说JVM的参...
    99+
    2022-11-12
  • JVM中GC调优的示例分析
    小编给大家分享一下JVM中GC调优的示例分析,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!那些GC的默认值其实GC或者说JVM的参数非常非常的多,有控制内存使用的:有控制JIT的:有控制分代比例的,也有控制GC并发的:当然...
    99+
    2023-06-15
  • jvm垃圾回收之GC调优工具分析详解
    进行GC性能调优时, 需要明确了解, 当前的GC行为对系统和用户有多大的影响。有多种监控GC的工具和方法, 本章将逐一介绍常用的工具。 JVM 在程序执行的过程中, 提供了GC行为的...
    99+
    2022-11-13
  • 解读Jvm的内存结构与GC及jvm参数调优
    目录一、JVM 内存结构1、类加载子系统2、方法区(method)3、堆(heap)4、栈(stack)5、本地方法栈6、pc寄存器(了解即可)7、执行引擎8、垃圾收集器二、堆&nd...
    99+
    2023-05-19
    Jvm内存结构 jvm参数调优 Jvm的内存结构与GC
  • jvm GC调优工具怎么用
    这篇文章主要介绍“jvm GC调优工具怎么用”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“jvm GC调优工具怎么用”文章能帮助大家解决问题。JVM 在程序执行的过程中, 提供了GC行为的原生数据。...
    99+
    2023-06-29
  • JVM(Java虚拟机)详解(JVM 内存模型、堆、GC、直接内存、性能调优)
    JVM(Java虚拟机) JVM 内存模型 结构图 jdk1.8 结构图(极简) jdk1.8 结构图(简单) JVM(Java虚拟机): 是一个抽象的计算模型。如同一台真实的机器,它有自己的指令集和执行引擎,可以在运行时操控内存区域。...
    99+
    2023-08-30
    jvm GC 直接内存 jvm性能调优
  • JVM中四种GC算法案例详解
    目录介绍引用计数算法(Reference counting)算法思想:核心思想:优点:缺点:例子如图:标记–清除算法(Mark-Sweep)算法思想:优点缺点例子如图标记–整理算法算...
    99+
    2022-11-12
  • JVM中的GC初识
    目录GC简介何为GC为何要学习GCGC垃圾对象判定引用计数法可达性分析法常见GC算法分析标记清除标记复制标记整理分代回收章节面试分析GC简介 何为GC GC(Garbage Coll...
    99+
    2022-11-13
  • 详解 Java性能优化和JVM GC(垃圾回收机制)
    Java的性能优化,JVM GC(垃圾回收机制)在学习Java GC 之前,我们需要记住一个单词:stop-the-world 。它会在任何一种GC算法中发生。stop-the-world 意味着JVM因为需要执行GC而停止了应用程序的执行...
    99+
    2023-06-02
  • Java JVM虚拟机调优详解
    目录jmap查看内存信息jstackjinfo查看jvm系统参数Jstat查看堆内存使用和类加载的数量信息内存泄漏jmap查看内存信息 jmap histo /pid > ./...
    99+
    2022-11-13
  • jvm垃圾回收GC调优基础原理分析
    目录核心概念(Core Concepts)Latency(延迟)Throughput(吞吐量)Capacity(系统容量)相关示例Tuning for Latency(调优延迟指标)...
    99+
    2022-11-13
  • GC参考手册jvm垃圾回收详解
    1,什么是垃圾回收? 顾名思义,垃圾收集(Garbage Collection)的意思就是 —— 找到垃圾并进行清理。但现有的垃圾收集实现却恰恰相反: 垃圾收...
    99+
    2022-11-13
  • java虚拟机之JVM调优详解
    目录JVM常用命令行参数1. 查看参数列表2. 基本参数说明:3. 扩展参数说明:虚拟机参数分类什么是调优1.调优步骤:2.调优案例2.1案例一2.2案例二JVM优化总结JVM常用命...
    99+
    2022-11-12
  • jvm垃圾回收GC调优基础原理是什么
    这篇文章主要介绍了jvm垃圾回收GC调优基础原理是什么的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇jvm垃圾回收GC调优基础原理是什么文章都会有所收获,下面我们一起来看看吧。说明:Capacity: 性能,能...
    99+
    2023-06-29
  • JVM的垃圾回收机制详解与调优
    这篇文章主要讲解了“JVM的垃圾回收机制详解与调优”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“JVM的垃圾回收机制详解与调优”吧!JVM的gc概述gc即垃圾收集机制是指jvm用于释放那些不...
    99+
    2023-06-03
  • JVM中的GC知识点有哪些
    这篇文章主要介绍了JVM中的GC知识点有哪些的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇JVM中的GC知识点有哪些文章都会有所收获,下面我们一起来看看吧。GC简介何为GCGC(Garbage Collecti...
    99+
    2023-06-30
  • JVM方法调用invokevirtual详解
      在java代码运行期间,方法间的调用可以说是最为频繁的了,那么这些方法间的调用在底层的虚拟机又做了什么事情呢?现在就让我们揭开那道神秘的面纱。   JVM调用方法有五条指令,分别...
    99+
    2022-11-13
  • 怎么去解析JVM调优
    怎么去解析JVM调优,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。你对JVM调优的概念是否了解,这里和大家分享一下,首先看一下JVM调优工具,主要有Jconso...
    99+
    2023-06-17
  • JVM原理之完整的一次GC流程解读
    目录一、可达性分析算法(GC Roots)二、JVM中的堆结构2.1 为何新生代要分为三个区2.2 新生代对象的分配和回收2.3 老年代对象的分配和回收三、JVM完整的GC流程总结J...
    99+
    2022-12-28
    JVM原理 GC流程 JVM GC流程
  • JVM垃圾回收机制详解和怎样进行调优
    JVM垃圾回收机制详解和怎样进行调优,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。这里向大家简单介绍一下JVM垃圾回收机制详解和调优,gc即垃圾收集机制,是指jvm用于释放...
    99+
    2023-06-17
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作