深入理解java虚拟机

深入理解java虚拟机

​​大学里非科班生出身,在学习java的路上,有很多前辈一直力荐这本书,不管什么段位都在推荐,让我对这本神奇的书产生了浓厚的兴趣.由于基础薄弱主要挑选了书中的看上去见过的几个理论知识部分,但是当时除了觉得晦涩难懂,根本不知所云.没看的部分就是实战部分,主要条件也不允许(还是懒),虚拟机性能监控与故障处理工具和第5章调优案例与实战,第4部分程序编译与代码优化. 通过一个学年对《深入理解Java虚拟机》的研读,从此对Java知识体系有一个更宏观的把握,对JVM有更全面的认识,准确的说知道了一点皮毛.

先来说下本书的大致内容,我的阅读顺序基本是按书籍的排版书序来的,第一部分是Java的历史,这部分介绍了整个Java技术体系的过去、现在和未来;第二部分,重点介绍了JVM的自动内存管理,包括虚拟机内存区域的划分原理以及各种内存溢出异常产生的原因,JMM,主要有JMM的分类、对象的生命周期,垃圾回收算法和垃圾收集器;第三部分介绍了Java字节码文件和java虚拟机加载字节码文件的流程;第四部分讲解了程序的编译与代码的优化,阐述了泛型、自动装箱拆箱、条件编译等语法糖的原理;讲解了虚拟机的热点探测方法、HotSpot的即时编译器、编译触发条件,以及如何从虚拟机外部观察和分析JIT编译的数据和结果。第五部分介绍了Java实现高效并发的原理,包括JVM内存模型的结构和操作;原子性、可见性和有序性在Java内存模型中的体现;先行发生原则的规则和使用;线程在Java语言中的实现原理;虚拟机实现高效并发所做的一系列锁优化措施。。

总体来说本书的内容还是相当丰富而富有层次的,由浅入深,娓娓道来,通过大量的实例和代码来助人理解,但是在看书的过程中由于自身功力不够,还是有许多不理解的地方,或者费解的地方,比如说CMS垃圾回收器的实现并发垃圾回收过程,同时在看书的过程中也建议大家做好相应的笔记,吧不懂的地方做好标记,加深印象,说不定某一天就茅塞顿开科呢,现在网课程也很多,在大神的讲解下,加上之前自己的阅读,理解起来绝对就如虎添翼,如沐春风。

由于个人当时看的是第二版本,也存在一些疑虑,毕竟知识都更新换代很久了,比如PermGen空间情况这个内存空间被完全删除。PermSize和MaxPermSizeJVM参数已被忽略,如果在启动时出现,则会发出警告。元空间内存分配模型大部分类元数据都是从本地内存中分配。用于描述类元数据的“klasses”已被删除。我们的JDK8中类加载(方法区的功能)已经不在永久代PerGem中了,而是Metaspace中。可以配合JVisualVM来看,更直观一些。如今终于可以把它看到《深入理解JVM虚拟机》的第三版,又重新有了很多的期待。
链接: https://item.jd.com/12607299.html?dist=jd深入理解java虚拟机

深入理解java虚拟机