JVM参数与大厂实战调优模板,你掌握了吗?
- 内容介绍
- 文章标签
- 相关推荐
读书心得:乐观积极面对挑战,能力与挑战难度相匹配,专注享受当下事宜,无视周边因素,达到忘我状态,时间也会忘记。 不管是刚入行没多久的JAVA初级研发还是10年资深架构师,手上都需要珍藏一份JVM参数指南。不仅是为了学习JVM调优,也是时刻方便在实际工作中对业务系统的调优监控做出及时调整。本文全面整理JVM参数清单,并做成表格,以及公开一份大厂生产环境核心常用的调优模板供大家参考应用,希望对有缘刷到的同学有所帮助,你没事吧?。
一、 那些让人头秃的JVM参数基础
这里看到里面有的是-X开头,有的是-XX开头,有的是-D开头,有的是-开头。这里我们把-开头的,叫做,-X开头的叫做,-XX开头的叫做。真的,有时候看着这些参数我就觉得头大,但是没办法,为了生活,为了那点碎银几两,还得硬着头皮学。

啥玩意儿? 粗略统计了一下 JDK8 JVM全部参数加起来有将近800个,实际我们常用的以及调优参数大概100多个,这里我们重点列举核心常用的参数。比如刚才这个-XX:+UseConcMarkSweepGC,表示启用CMS垃圾收集器。打开这个参数后CMS通过CMSInitiatingOccupancyFraction的值进行垃圾回收。
代码语言:java
-Xms :设置初始 Java 堆大小;
-Xmx :设置最大 Java 堆大小;
-Xss : 设置 Java 线程堆栈大小;
其实也简单, 类似非标准参数java -help一样,只要施行java -X 就可以看到全部非标准参数。可以通过java -help命令去查看标准参数清单。但是千万别乱试,试坏了服务器挂了别怪我没提醒你,到位。。
1.1 随机插入:红米4高配版参数对比
说到参数, 其实不光是JVM有参数,我们日常用的手机也有参数。有时候看看手机参数,心情会好一点。这里给大家整理了一个表格, 好吧好吧... 看看红米4高配版的参数,对比一下你的JVM堆内存,是不是觉得手机内存太小了?
| 参数项 | 红米4高配版参数详情 | 备注 |
|---|---|---|
| CPU | 骁龙625 | 八核64位处理器 |
| 屏幕 | 5寸1080p屏幕 | 显示效果细腻 |
| 内存 | 3GB/4GB | 比-Xmn小多了 |
| 电池 | 4100mAh | 续航持久 |
想要了解红米4高配版参数?php小编新一为大家整理了以下内容,针对红米4高配版参数这一问题,文章将详细地介绍相关知识,帮助大家全面把握这一问题,欢迎大家阅读! 一、 红米4高配版参数? 小米红米4高配版,采用5寸1080p屏幕、骁龙 切中要害。 6...台式电脑电池安装步骤?台式电脑电池安装步骤?你是不是也曾对台式电脑的电池安装感到困惑,不知道从何下手?别担心,php小编柚子这就为你带来详细的分步指南,让你轻松搞定台式电脑电池的安装,保障你的机器顺畅运行。快来往下阅读...
二、大厂实战调优模板
在一线头部大厂,通过长期生产实践技术经验积累,基础技术架构组或者相关架构师会整理分享一个jvm最佳实践模板,帮助团队成员。 不忍直视。 让核心服务首次上线、 以及后续业务规模增长,不管监控是否发现性能问题、还是业务爆涨,都能提供长期稳定运行支撑。
这里分享一份生产实战调优常用的一个模板, 大家不可盲目照搬直接应用,可以先保存,具体还是要看业务量、业务场景来调整,后续分享实战案例,帮助大家分析选择调优自己的系统服务。
-Xms8888M -Xmx8888M -Xmn6666M -Xss1M -XX:MetaspaceSize=256M -XX:MaxMetaspaceSize=256M -XX:SurvivorRatio=8 -XX:MaxTenuringThreshold=10-XX:+UseParNewGC -XX:+UseConcMarkSweepGC -XX:CMSInitiatingOccupancyFaction=92-XX:+UseCMSCompactAtFullCollection -XX:CMSFullGCsBeforeCompaction=2 -XX:+CMSParallelInitialMarkEnabledXX:+CMSScavengeBeforeRemark -XX:+PrintGCApplicationStoppedTime -XX:+DisableExplicitGC -XX:+PrintGCDetails -XX:+PrintGCDateStamps-Xloggc: -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/mycompany/appname/oom
看到这一长串代码是不是晕了?别急,我们慢慢拆解。这个模板, 有些参数是非常必要的,比如:-XX:+DisableExplicitGC: 关闭System.gc,程序代码里主动gc是非常糟糕的。-XX:+CMSParallelInitialMarkEnabled:CMS的初始标记阶段是会Stop world, 导致系统停顿,加了这个参数可以开启多线程并发进行标记,减少暂停时间。
2.1 关键参数详解
我们这里把虚拟机栈、 堆内存,MetaSpace元数据区相关参数都统一当做堆内存参数。除了刚才说的非标准参数-Xms、 -Xmx、-Xmn,还有:
- -Xms设置初始 Java 堆大小;
- -Xmx设置最大 Java 堆大小;
- -Xmn设置年轻代大小为192m。整个JVM内存大小=年轻代大小 + 年老代大小 + 持久代大小。持久代一般固定大小为64m,所以增大年轻代后,将会减小年老代大小。此值对系统性能影响较大,Sun官方推荐配置为整个堆的3/8。
- -Xss128k设置每个线程的堆栈大小。JDK5.0以后每个线程堆栈大小为1M...
小丑竟是我自己。 比如:-XX:HeapDumpPath=./log/dump/,设置内存溢出快照保存地址。这个很重要,服务器崩了的时候,这就是救命稻草。
三、 深入理解垃圾回收器参数
与GC垃圾回收器相关的参数,我们划为一类。比如:-XX:+UseConcMarkSweepGC,指定使用CMS垃圾回收器。 麻了... 或者-XX:+UseG1GC,使用G1垃圾回收器。现在G1越来越流行了但是CMS依然在很多老项目里发光发热。
-XX:CMSFullGCsBeforeCompaction, CMS回收器完成多少次FGC后进行内存压缩;
-XX:CMSInitiatingOccupancyFraction=92,老年代占比大于92%后开始CMS FGC处理
-XX:+UseParNewGC,使用ParNew回收器来为年轻代做YGC;
-XX:ParallelGCThreads,负责垃圾回收的并发线程数量。
这里发现,不稳定参数的赋值语法还有点复杂,这里细分了几种类型。
1、 数字类型参数值
太虐了。 -XX:=,用=号并赋值数字。比如-XX:SurvivorRatio=8,这个8是JDK的默认值。标识年轻代中Eden区大小/两个Survivor区的大小。也就是在年轻代内存划分,默认比例是Eden:S1:S0 = 8:1:1。
2、 布尔类型参数值
精辟。 是通过+\-号,来表示启用、禁用。比如-XX:+UseSerialGC,使用串行垃圾收集器。或者-XX:-DisableExplicitGC,启用System.gc调用。
3、字符串类型参数值
通过=并设置字符串值。比如-XX:HeapDumpPath=/mycompany/appname/oom,指定路径。
3.1 随机插入:台式电脑电池安装步骤
调优调累了 不如动手组装一下电脑,换换脑子。你知道台式电脑电池怎么装吗?这里有个表格,步骤很详细,比JVM参数好记多了。
| 步骤 | 操作说明 | 注意事项 |
|---|---|---|
| 第一步 | 关闭电源并拔掉插头 | 防止触电, 平安第一 |
| 第二步 | 打开机箱侧板 | 找到主板上的电池位置 |
| 第三步 | 取下旧电池 | 用手指轻轻推开卡扣 |
| 第四步 | 装入新电池 | 正极朝上,确保卡紧 |
我深信... 台式电脑电池安装步骤?台式电脑电池安装步骤?你是不是也曾对台式电脑的电池安装感到困惑,不知道从何下手?别担心,php小编柚子这就为你带来详细的分步指南,让你轻松搞定台式电脑电池的安装,保障你的机器顺畅运行。快来往下阅读...
四、 JVM参数清单大放送
上一篇文章,末尾我们给了一份jvm参数清单并留了一个问题,说说每个参数的意义? 我给跪了。 看完本文就能得到完整的答案,尽量不填鸭投喂,希望和大家一起思考提升进步。
其他几个,大家看第四部分参数清单去找对应含义和重要性。现附上JVM参数表格,绝绝子...。
| 参数名 | 参数意义、 用法说明 | 默认值 |
|---|---|---|
| -XX:MetaspaceSize | 类元数据区的大小,Metaspace第一次超出该大小时触发垃圾回收。 | 默认值1024 |
| -XX:MaxMetaspaceSize | 元数据区最大大小,这个地方放.class类信息 | 无限制 |
| -XX:NewRatio | 年轻代与年老代的比值,默认是2:1 | 2 |
| -XX:SurvivorRatio | Eden区与Survivor区的大小比值 | 8 |
| -XX:MaxTenuringThreshold | 年轻代对象进入老年代的年龄。如果设置为0的话,则年轻代对象不经过Survivor区,直接进入年老代。 | 15 |
| -XX:PretenureSizeThreshold | 可以直接进入老年代的大对象大小 | 无 |
| -XX:+UseCMSInitiatingOccupancyOnly | 老年代占比大于该参数比例后开始CMS FGC处理(这个值大于等于0则直接取百分号,小于0则。往往需要配合-XX:+UseCMSInitiatingOccupancyOnly使用) | 默认是禁用 |
| -XX:CMSInitiatingOccupancyFraction | 老年代占比大于该参数比例后开始CMS FGC处理 | 默认92 |
| -XX:CMSFullGCsBeforeCompaction | 多少次GC后 CMS进行内存碎片整理 | 默认值2 |
| -XX:+CMSScavengeBeforeRemark | 打开这个参数,CMS在之前先施行YGC | 默认禁用 |
| -XX:+PrintGCApplicationStoppedTime | 打印应用程序由于GC而产生的停顿时间 | 默认启用 |
| -XX:+PrintReferenceGC | 跟踪系统内的软引用,弱引用,虚引用和Finallize队列 | 默认禁用 |
| -XX:+HeapDumpOnOutOfMemoryError | OOM抛出异常时将堆数据转储到HeapDumpPath目录 | 默认禁用 |
| -XX:OnOutOfMemoryError | 指定这个参数,可以在服务OOM后施行自定义脚本,比如用来发送邮件告警信息,重启服务。 | 无 |
代码语言:shell
aa@aaMacBook-Pro ~ % java -XXUnrecognized option: -XXError: Could not create Java Virtual Machine.Error: A fatal exception has occurred. Program will exit.
说真的... 报错了不能如此类推!这里末尾还需要加+PrintFlagsFinal才可以。之前是java -X查看非标准参数,现在是 java -XX? +PrintFlagsFinal。大家要注意,别到时候命令敲错了面试官问你,你一脸懵逼。
何苦呢? JVM性能调优是一个非常重要的技能,大厂也特爱问,属于高薪必备技能@mikechen JVM内存调优 对JVM内存的系统级的调优主要的目的是减少GC的频率和Full GC的次数。 1.Full GC 会对整个堆进行整理,包括Young、Tenured和Perm。FullGC主要原因是需要对整个堆进行回收 周边新闻赞助商登录m... 使用各种JVM工具,查看当前日志,分析当前JVM参数设置,并且分析当前堆内存快照和gc日志,根据实际的各区域内存划分和GC施行时间,觉得是否进行优化。
在对JVM调优的过程中,很大一部分工作就是对于FullGC的调节,下面详细介绍对应JVM调优的方法和步骤。 二、JVM性能调优方法和步骤 1.监控GC的状态 使用各种JVM工具,查看当前日志,分析当前JVM参数设置,并且分析当前堆内存快照和gc日志,工具Mat打开分析。 太硬核了。 4.分析后来啊,判断是否需要优化 如果各项参数设置合理,系统没有超时日志出现,GC频率不高,GC耗时不高,那么没有必要进行GC优化,如果GC时间超过1-3秒,或者频繁GC,则必...
推荐阅读:1、 JVM进阶调优系列CMS回收器通俗演义一文讲透FullGC2、 尊嘟假嘟? JVM进阶调优系列年轻代和老年代采用什么GC算法回收?
5、JVM进阶调优系列类加载器原理一文讲透
呵... 再说说希望大家都能掌握这些参数,虽然它们看起来枯燥无味,甚至有点反人类,但这就是技术的魅力所在。当你通过调整一个参数, 让系统的吞吐量翻倍,或者让Full GC从几秒钟变成几十毫秒的时候,那种成就感是无与伦比的。加油吧,打工人!
读书心得:乐观积极面对挑战,能力与挑战难度相匹配,专注享受当下事宜,无视周边因素,达到忘我状态,时间也会忘记。 不管是刚入行没多久的JAVA初级研发还是10年资深架构师,手上都需要珍藏一份JVM参数指南。不仅是为了学习JVM调优,也是时刻方便在实际工作中对业务系统的调优监控做出及时调整。本文全面整理JVM参数清单,并做成表格,以及公开一份大厂生产环境核心常用的调优模板供大家参考应用,希望对有缘刷到的同学有所帮助,你没事吧?。
一、 那些让人头秃的JVM参数基础
这里看到里面有的是-X开头,有的是-XX开头,有的是-D开头,有的是-开头。这里我们把-开头的,叫做,-X开头的叫做,-XX开头的叫做。真的,有时候看着这些参数我就觉得头大,但是没办法,为了生活,为了那点碎银几两,还得硬着头皮学。

啥玩意儿? 粗略统计了一下 JDK8 JVM全部参数加起来有将近800个,实际我们常用的以及调优参数大概100多个,这里我们重点列举核心常用的参数。比如刚才这个-XX:+UseConcMarkSweepGC,表示启用CMS垃圾收集器。打开这个参数后CMS通过CMSInitiatingOccupancyFraction的值进行垃圾回收。
代码语言:java
-Xms :设置初始 Java 堆大小;
-Xmx :设置最大 Java 堆大小;
-Xss : 设置 Java 线程堆栈大小;
其实也简单, 类似非标准参数java -help一样,只要施行java -X 就可以看到全部非标准参数。可以通过java -help命令去查看标准参数清单。但是千万别乱试,试坏了服务器挂了别怪我没提醒你,到位。。
1.1 随机插入:红米4高配版参数对比
说到参数, 其实不光是JVM有参数,我们日常用的手机也有参数。有时候看看手机参数,心情会好一点。这里给大家整理了一个表格, 好吧好吧... 看看红米4高配版的参数,对比一下你的JVM堆内存,是不是觉得手机内存太小了?
| 参数项 | 红米4高配版参数详情 | 备注 |
|---|---|---|
| CPU | 骁龙625 | 八核64位处理器 |
| 屏幕 | 5寸1080p屏幕 | 显示效果细腻 |
| 内存 | 3GB/4GB | 比-Xmn小多了 |
| 电池 | 4100mAh | 续航持久 |
想要了解红米4高配版参数?php小编新一为大家整理了以下内容,针对红米4高配版参数这一问题,文章将详细地介绍相关知识,帮助大家全面把握这一问题,欢迎大家阅读! 一、 红米4高配版参数? 小米红米4高配版,采用5寸1080p屏幕、骁龙 切中要害。 6...台式电脑电池安装步骤?台式电脑电池安装步骤?你是不是也曾对台式电脑的电池安装感到困惑,不知道从何下手?别担心,php小编柚子这就为你带来详细的分步指南,让你轻松搞定台式电脑电池的安装,保障你的机器顺畅运行。快来往下阅读...
二、大厂实战调优模板
在一线头部大厂,通过长期生产实践技术经验积累,基础技术架构组或者相关架构师会整理分享一个jvm最佳实践模板,帮助团队成员。 不忍直视。 让核心服务首次上线、 以及后续业务规模增长,不管监控是否发现性能问题、还是业务爆涨,都能提供长期稳定运行支撑。
这里分享一份生产实战调优常用的一个模板, 大家不可盲目照搬直接应用,可以先保存,具体还是要看业务量、业务场景来调整,后续分享实战案例,帮助大家分析选择调优自己的系统服务。
-Xms8888M -Xmx8888M -Xmn6666M -Xss1M -XX:MetaspaceSize=256M -XX:MaxMetaspaceSize=256M -XX:SurvivorRatio=8 -XX:MaxTenuringThreshold=10-XX:+UseParNewGC -XX:+UseConcMarkSweepGC -XX:CMSInitiatingOccupancyFaction=92-XX:+UseCMSCompactAtFullCollection -XX:CMSFullGCsBeforeCompaction=2 -XX:+CMSParallelInitialMarkEnabledXX:+CMSScavengeBeforeRemark -XX:+PrintGCApplicationStoppedTime -XX:+DisableExplicitGC -XX:+PrintGCDetails -XX:+PrintGCDateStamps-Xloggc: -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/mycompany/appname/oom
看到这一长串代码是不是晕了?别急,我们慢慢拆解。这个模板, 有些参数是非常必要的,比如:-XX:+DisableExplicitGC: 关闭System.gc,程序代码里主动gc是非常糟糕的。-XX:+CMSParallelInitialMarkEnabled:CMS的初始标记阶段是会Stop world, 导致系统停顿,加了这个参数可以开启多线程并发进行标记,减少暂停时间。
2.1 关键参数详解
我们这里把虚拟机栈、 堆内存,MetaSpace元数据区相关参数都统一当做堆内存参数。除了刚才说的非标准参数-Xms、 -Xmx、-Xmn,还有:
- -Xms设置初始 Java 堆大小;
- -Xmx设置最大 Java 堆大小;
- -Xmn设置年轻代大小为192m。整个JVM内存大小=年轻代大小 + 年老代大小 + 持久代大小。持久代一般固定大小为64m,所以增大年轻代后,将会减小年老代大小。此值对系统性能影响较大,Sun官方推荐配置为整个堆的3/8。
- -Xss128k设置每个线程的堆栈大小。JDK5.0以后每个线程堆栈大小为1M...
小丑竟是我自己。 比如:-XX:HeapDumpPath=./log/dump/,设置内存溢出快照保存地址。这个很重要,服务器崩了的时候,这就是救命稻草。
三、 深入理解垃圾回收器参数
与GC垃圾回收器相关的参数,我们划为一类。比如:-XX:+UseConcMarkSweepGC,指定使用CMS垃圾回收器。 麻了... 或者-XX:+UseG1GC,使用G1垃圾回收器。现在G1越来越流行了但是CMS依然在很多老项目里发光发热。
-XX:CMSFullGCsBeforeCompaction, CMS回收器完成多少次FGC后进行内存压缩;
-XX:CMSInitiatingOccupancyFraction=92,老年代占比大于92%后开始CMS FGC处理
-XX:+UseParNewGC,使用ParNew回收器来为年轻代做YGC;
-XX:ParallelGCThreads,负责垃圾回收的并发线程数量。
这里发现,不稳定参数的赋值语法还有点复杂,这里细分了几种类型。
1、 数字类型参数值
太虐了。 -XX:=,用=号并赋值数字。比如-XX:SurvivorRatio=8,这个8是JDK的默认值。标识年轻代中Eden区大小/两个Survivor区的大小。也就是在年轻代内存划分,默认比例是Eden:S1:S0 = 8:1:1。
2、 布尔类型参数值
精辟。 是通过+\-号,来表示启用、禁用。比如-XX:+UseSerialGC,使用串行垃圾收集器。或者-XX:-DisableExplicitGC,启用System.gc调用。
3、字符串类型参数值
通过=并设置字符串值。比如-XX:HeapDumpPath=/mycompany/appname/oom,指定路径。
3.1 随机插入:台式电脑电池安装步骤
调优调累了 不如动手组装一下电脑,换换脑子。你知道台式电脑电池怎么装吗?这里有个表格,步骤很详细,比JVM参数好记多了。
| 步骤 | 操作说明 | 注意事项 |
|---|---|---|
| 第一步 | 关闭电源并拔掉插头 | 防止触电, 平安第一 |
| 第二步 | 打开机箱侧板 | 找到主板上的电池位置 |
| 第三步 | 取下旧电池 | 用手指轻轻推开卡扣 |
| 第四步 | 装入新电池 | 正极朝上,确保卡紧 |
我深信... 台式电脑电池安装步骤?台式电脑电池安装步骤?你是不是也曾对台式电脑的电池安装感到困惑,不知道从何下手?别担心,php小编柚子这就为你带来详细的分步指南,让你轻松搞定台式电脑电池的安装,保障你的机器顺畅运行。快来往下阅读...
四、 JVM参数清单大放送
上一篇文章,末尾我们给了一份jvm参数清单并留了一个问题,说说每个参数的意义? 我给跪了。 看完本文就能得到完整的答案,尽量不填鸭投喂,希望和大家一起思考提升进步。
其他几个,大家看第四部分参数清单去找对应含义和重要性。现附上JVM参数表格,绝绝子...。
| 参数名 | 参数意义、 用法说明 | 默认值 |
|---|---|---|
| -XX:MetaspaceSize | 类元数据区的大小,Metaspace第一次超出该大小时触发垃圾回收。 | 默认值1024 |
| -XX:MaxMetaspaceSize | 元数据区最大大小,这个地方放.class类信息 | 无限制 |
| -XX:NewRatio | 年轻代与年老代的比值,默认是2:1 | 2 |
| -XX:SurvivorRatio | Eden区与Survivor区的大小比值 | 8 |
| -XX:MaxTenuringThreshold | 年轻代对象进入老年代的年龄。如果设置为0的话,则年轻代对象不经过Survivor区,直接进入年老代。 | 15 |
| -XX:PretenureSizeThreshold | 可以直接进入老年代的大对象大小 | 无 |
| -XX:+UseCMSInitiatingOccupancyOnly | 老年代占比大于该参数比例后开始CMS FGC处理(这个值大于等于0则直接取百分号,小于0则。往往需要配合-XX:+UseCMSInitiatingOccupancyOnly使用) | 默认是禁用 |
| -XX:CMSInitiatingOccupancyFraction | 老年代占比大于该参数比例后开始CMS FGC处理 | 默认92 |
| -XX:CMSFullGCsBeforeCompaction | 多少次GC后 CMS进行内存碎片整理 | 默认值2 |
| -XX:+CMSScavengeBeforeRemark | 打开这个参数,CMS在之前先施行YGC | 默认禁用 |
| -XX:+PrintGCApplicationStoppedTime | 打印应用程序由于GC而产生的停顿时间 | 默认启用 |
| -XX:+PrintReferenceGC | 跟踪系统内的软引用,弱引用,虚引用和Finallize队列 | 默认禁用 |
| -XX:+HeapDumpOnOutOfMemoryError | OOM抛出异常时将堆数据转储到HeapDumpPath目录 | 默认禁用 |
| -XX:OnOutOfMemoryError | 指定这个参数,可以在服务OOM后施行自定义脚本,比如用来发送邮件告警信息,重启服务。 | 无 |
代码语言:shell
aa@aaMacBook-Pro ~ % java -XXUnrecognized option: -XXError: Could not create Java Virtual Machine.Error: A fatal exception has occurred. Program will exit.
说真的... 报错了不能如此类推!这里末尾还需要加+PrintFlagsFinal才可以。之前是java -X查看非标准参数,现在是 java -XX? +PrintFlagsFinal。大家要注意,别到时候命令敲错了面试官问你,你一脸懵逼。
何苦呢? JVM性能调优是一个非常重要的技能,大厂也特爱问,属于高薪必备技能@mikechen JVM内存调优 对JVM内存的系统级的调优主要的目的是减少GC的频率和Full GC的次数。 1.Full GC 会对整个堆进行整理,包括Young、Tenured和Perm。FullGC主要原因是需要对整个堆进行回收 周边新闻赞助商登录m... 使用各种JVM工具,查看当前日志,分析当前JVM参数设置,并且分析当前堆内存快照和gc日志,根据实际的各区域内存划分和GC施行时间,觉得是否进行优化。
在对JVM调优的过程中,很大一部分工作就是对于FullGC的调节,下面详细介绍对应JVM调优的方法和步骤。 二、JVM性能调优方法和步骤 1.监控GC的状态 使用各种JVM工具,查看当前日志,分析当前JVM参数设置,并且分析当前堆内存快照和gc日志,工具Mat打开分析。 太硬核了。 4.分析后来啊,判断是否需要优化 如果各项参数设置合理,系统没有超时日志出现,GC频率不高,GC耗时不高,那么没有必要进行GC优化,如果GC时间超过1-3秒,或者频繁GC,则必...
推荐阅读:1、 JVM进阶调优系列CMS回收器通俗演义一文讲透FullGC2、 尊嘟假嘟? JVM进阶调优系列年轻代和老年代采用什么GC算法回收?
5、JVM进阶调优系列类加载器原理一文讲透
呵... 再说说希望大家都能掌握这些参数,虽然它们看起来枯燥无味,甚至有点反人类,但这就是技术的魅力所在。当你通过调整一个参数, 让系统的吞吐量翻倍,或者让Full GC从几秒钟变成几十毫秒的时候,那种成就感是无与伦比的。加油吧,打工人!

