案例实战 (九) 总复习:线上系统的JVM参数优化、GC问题定位排查、OOM分析解决
相信大家应该还记得我们最早做这个JVM优化实战专栏的初衷,因为国内绝大多数的Java工程师对JVM这块知识的学习,总是停留在一些理论的层面
从没有人系统化的告诉你,JVM到底应该如何做优化。
网上也只有一些看不太明白的博客分享少数人自己的JVM优化经验,但是很多新手面对这些优化博客往往只能看到表面,而无法看到其背后的本质。
因此我们才决定了做这个JVM优化实战专栏,希望能够帮助到国内大部分的Java工程师掌握对线上生产系统进行JVM性能优化和OOM问题解决的思路。
而且我们在专栏讲解的过程中,抛弃掉了一些跟大家平时生产环境实战不太相关的内容,比如class文件结构、编译器、字节码执行引擎,等等。
这个专栏带给大家的东西其实主要就是三个部分:
第一个是JVM运行我们写好的系统最根本的工作原理,包括:
- 内存各个部分的划分
- 代码再执行的过程中,各个内存区域是如何配合协调工作的
- 对象是如何分配的
- GC如何触发
- GC执行的原理是什么
- 常见的用于控制 JVM 工作行为的一些核心参数都有哪些
第二个是对于一个写好的系统,我们应该如何通过预估的方法给他设置一些相对合理的JVM参数,然后在测试的时候如何合理的优化调整JVM的参数
另外在线上部署的系统如何对JVM进行监控,如何对线上出现GC性能问题的JVM进行合理的优化。
除此以外,我们提供了大量的来自生产一线的实战案例,向大家展示了各种奇怪场景下的JVM GC问题,通过案例来给大家展示解决这类问题的思路和方法。
第三个是对于一个生产运行的系统,如果出现了OOM内存溢出问题,我们应该采用一种什么样的方式来进行分析、定位和解决?
同样我们也提供了大量的一线生产案例,给大家展示了各种千奇百怪的OOM问题的场景,同时展示了对这类问题的分析、定位和解决的思路。
我们相信,如果大家认认真真的学习完这个专栏,首先对JVM的运行原理一定有了一个较为深刻的理解
同时对自己负责的线上系统,能给出比较合理的JVM参数的设置
另外,对线上系统可能发生的频繁GC和OOM两种问题,都能有一定的经验和能力,去采用正确的思路分析解决生产问题。
所以在这里,我们希望大家在学习完这个专栏之后,有时间可以经常回过头去复习复习,看看专栏里的内容,然后自己做一些笔记,梳理出来JVM的工作原理,梳理出来合理设置JVM参数的方法,线上频繁GC和OOM问题的处理方法。
同时,希望大家好好的理解专栏中提供的非常宝贵的几十个实战案例的问题场景、分析和解决问题的思路
吃透这几十个案例背后的本质,你一定会积累出非常宝贵的JVM优化实战经验的!