相信很多java工程师在工作中都会接触到jvm,在面试中也会被问到跟java虚拟机有关的问题。我们为了把工作做好、把项目维护好、在系统出现fullgc等问题的时候,能够像老司机一样准确定位问题,很有必要把java虚拟机知识学习一遍。
然而,Java虚拟机的知识量很大,买一本书回来慢慢学习会比较消耗时间(例如《深入理解Java虚拟机》,其实这本书也只算"凑合")。况且jvm优质学习资源较少,只有官方文档较好,但是官方文档内容又太多了,不适合作为学习教材,而且还是英文的。
即使你下定决心,准备把Java虚拟机的所有知识彻底学一遍,也很有可能遇到这些问题:1)看到后面忘记前面;2)看的时候,没有练习机会,导致在实际要用的时候,又不知道怎么办;3)看完之后,当时虽然记得,但是过了一段时间之后,又都忘掉了。
针对上面这些问题,我们应该从实践出发,带着目的学习。这样不但记得牢、而且一开始就面向实践,理解得也要比单纯的看资料深入。在这篇文章中,就以我们公司的某个后端服务的java启动选项为例,介绍这些jvm选项,逐个解释这些选项的作用,及相关的JVM内存管理、GC或类加载等知识。
我们公司某一个大流量的后端服务配置了这些jvm选项(这些选项也是目前国内互联网公司经常用到的)
1) -Xms4G解释