全书共分为五大部分,围绕内存管理、执行子系统、程序编译与优化、高效并发等核心主题对JVM进行了全面而深入的分析,深刻揭示了JVM的工作原理。第一部分从宏观的角度介绍了整个Java技术体系、Java和JVM的发展历程、模块化,以及JDK的编译,这对理解本书后面内容有重要帮助。第二部分讲解了JVM的自动内存管理,包括虚拟机内存区域的划分原理以及各种内存溢出异常产生的原因;常见的垃圾收集算法以及垃圾收集器的特点和工作原理;常见虚拟机监控与故障处理工具的原理和使用方法。第三部分分析了虚拟机的执行子系统,包括类文件结构、虚拟机类加载机制、虚拟机字节码执行引擎。第四部分讲解了程序的编译与代码的优化,阐述了泛型、自动装箱拆箱、条件编译等语法糖的原理;讲解了虚拟机的热点探测方法、HotSpot的即时编译器、编译触发条件,以及如何从虚拟机外部观察和分析JIT编译的数据和结果;第五部分探讨了Java实现高效并发的原理,包括JVM内存模型的结构和操作;原子性、可见性和有序性在Java内存模型中的体现;先行发生原则的规则和使用;线程在Java语言中的实现原理;虚拟机实现高效并发所做的一系列锁优化措施。
深入理解Java虚拟机:JVM高级特性与最佳实践(第2版)在线阅读地址
深入理解Java虚拟机:JVM高级特性与最佳实践(第2版) 读后感 第(1)篇这本书在微信读书上看了一小部分,其余很大一部分是在书籍上阅读,类似这种篇幅相对长的书籍建议拥有一本纸质书比较好。书里的章节很多内容也很广,自己跳过了一些目前对自己而言很难理解以及帮助不是很明确的内容。整本书读下来自己有了一些小的收获,对于Jvm内存也不仅仅局限于栈内存堆内存上面,个人认为虚拟机栈,方法区和堆是需要理解掌握的,方法的调用执行对应虚拟机栈中栈帧的出栈入栈。书中介绍了常见的内存溢出以及与其对应相关的Jvm参数。详细介绍了垃圾回收相关的知识背景,相关的算法。简单提到了对象的可达性分析,介绍了几种垃圾回收算法的区别以及实现思路,通过对比新生代和老年代不同的特点,采用不同的收集算法回去的更高的效率。介绍了单线程收集器Serial,主要解决新生代垃圾回收问题,但是垃圾回收时会暂停用户的线程。Serial的多线程版本ParNew可与CMS收集器搭配使用分别解决新生代和老年代的垃圾回收问题,CMS收集器可与用户线程并发执行,但是和新生代的选择搭配只能是Serial或者Parnew,又持续介绍了Parallel Scavenge和Parallel Old收集器分别解决新生代和老年代的垃圾回收所用算法分别是复制算法和标记清理。重点介绍了G1收集器的优势以及缺陷。后面介绍了一些常用的jdk命令用于监测程序的运行状态。调优安案例那里我认为主要了解下常用的jvm性能调节参数即可。详细介绍了class文件的结构,以及类加载的过程,以及对应每个阶段主要做的工作。详细介绍了类加载器的双亲委派模型。介绍了字节码执行的流程,以及一些字节码指令,这部分内容我觉得我还是有点难理解的。介绍了不同的编译器,源文件经过词法语法分析建立语法树,填充符号表,注解处理,语法分析我们常见的一些语法是否合法的监测,解语法糖到最后输出字节码生成class文件。解语法糖这里比如范型的类型擦除,其实我们知道方法的重载是不包含范型参数的其实也和这里有关。介绍了解释器和编译器的利弊,以及jvm如何指定运行的选择的编译器,默认是混合使用。后面简单介绍了多线程的内存模型,线程安全问题以及线程安全的实现方法。附录的jvm参数还是没事要看看的,争取在开发中可以用起来,因为看的比较浅,可能一些认知存在一些问题.
转载请注明出处海之美文 » 深入理解Java虚拟机:JVM高级特性与最佳实践(第2版) 读后感