剑指JVM:虚拟机实践与性能调优
上QQ阅读APP看书,第一时间看更新

1.1 为什么要学习JVM

很多读者都有找工作的经历,随着互联网门槛越来越高,JVM知识也是中高级程序员求职面试时经常被问到的话题。所以如果想要通过面试,JVM知识是必备技能之一。除去面试,在程序开发的时候也会出现一些比较棘手的问题,比如:

(1)处于运行状态的线上系统突然卡死,造成系统无法访问,甚至直接内存溢出异常(Out Of Memory Error,OOM,后文统一使用OOM)。

(2)希望解决线上JVM垃圾回收的相关问题,但却无从下手。

(3)新项目上线,对各种JVM参数设置一脸茫然,选择系统默认设置,最后系统宕机。

以上问题都与本书要介绍的JVM有关,当学完本书后这些问题便可迎刃而解。大部分Java开发人员,会在项目中使用与Java平台相关的各种集成技术,但是对于Java技术的核心JVM却了解甚少。当然也有一些有一定工作经验的开发人员,心里一直认为SSM、微服务等技术才是重点,基础技术并不重要,这其实是一种本末倒置的“病态”。如果我们把核心类库的API比作数学公式的话,那么JVM的知识就好比公式的推导过程。对于一位合格的开发者来说,JVM中的一些知识也是必须掌握的。

JVM中的垃圾收集机制为我们整合了很多烦琐的工作,大大提高了开发的效率。垃圾收集也不是万能的,知悉JVM内存结构和工作机制也是Java工程师进阶的必备能力,它是设计高扩展性应用和诊断程序运行时问题的基础。深入了解JVM,有利于开发人员对项目做性能优化、保证平台性能和稳定性、优化项目架构、分析系统潜在风险以及解决系统瓶颈问题。