深入理解Java虚拟机 - 书评
我觉得《深入理解Java虚拟机》应该是目前市面上Java程序员人手一本的圣经了。记得我在上大学的时候,同系的学长极力给我推荐这本书,说是把这本书看烂了,保准能拿一个大Offer,于是我就跟这本书认识了。最开始差不多花了一周的时间把这本书过了一遍,大概看完了,其实因为当初的基础过于薄弱,只是记住了一些名词,比如栈,堆,常量池,GC什么的,当时看完觉得一头雾水,然后就放在一边了。等到我毕业了,开始工作了,在工作中碰到了很多问题,比如程序为什么GC了?程序为什么OutOfMemory了?我就突然想起来我好像之前有看过一本讲这些的书,于是我又把这本书拿起来重新读了一边,这次与上次不同在于上次我只是读这本书,而这次我是带着工作中的问题来阅读这本书,本来以为JVM底层是遥不可及的远方,但是在这本书中周老师层层递进剖析JVM底层,我也是从这开始对JVM内存分布有了一定的了解和认识,也是从这才知道了JVM内存被划分了这么多块,每一块的作用是什么?程序GC,OOM是发生在哪一部分的?内存底层理解了,那对于程序计数器,栈,堆,直接内存等等之间的联系就有了整体的认识,后面我对于每一部分的内部作用的学习就是建立在一个对整体有宏观了解的基础之上,在后面的学习过程中就会显得一切都是那么水到渠成。
这本书的第三章也是我阅读次数最多的章节,这个章节介绍了JVM的垃圾收集器和内存分配策略,这部分我觉得重要性在于两点:1. 工作中GC的问题是躲不过的问题,只有了解了GC的根因也才能进行合理的优化 2. 面试中这是必考点,哈哈哈哈。这章周老师讲解了不同的垃圾回收算法以及其适用场景,对于目前主流的垃圾回收器也进行了介绍,我在工作之中也是基于这章的内容进行了垃圾回收器的选择。
但是要说对我帮助最大的内容,必须是字节码部分,类加载机制和JavaAgent部分,我之前有很长一段时间工作的重点是基于JavaAgent进行分布式链路跟踪服务的建立和维护,最开始对这些也都不甚了解,网上成体系的书籍也不是很多,但是这本书中就对这几部分进行了深入的介绍,其中我也是阅读了类加载机制,才明白JavaAgent流程的开始点,以及不同版本之间class冲突的原因,这些东西帮我避免了很多个线上事故 ̄□ ̄||。当前这部分我再面试之中也是碰到了好几个面试官都问我了。
本书后几章中对于Java线程和线程安全与锁优化,这些内容也都是面试必考点啊,这些东西如果不懂,我觉得面试十有八九挂,我印象中我面试过的百度,滴滴,快手都问了这些问题,基本你如果把这本书背过(死记硬背容易忘,需要理解的背),这部分内容一定是对答如流,面试官也会对你高看一眼(反正我会,啊哈哈哈)
最后,周老师要出《深入理解Java虚拟机》,我必须要大力支持,毕竟这些东西是周老师花了数年的心血的结晶,我需要紧跟大佬的脚步,向大佬学习!努力!