《深入理解Java虚拟机:JVM高级特性与最佳实践(第2版)》读后感900字
这本书在微信读书上看了一小部分,其余很大一部分是在书籍上阅读,类似这种篇幅相对长的书籍建议拥有一本纸质书比较好。书里的章节很多内容也很广,自己跳过了一些目前对自己而言很难理解以及帮助不是很明确的内容。整本书读下来自己有了一些小的收获,对于Jvm内存也不仅仅局限于栈内存堆内存上面,个人认为虚拟机栈,方法区和堆是需要理解掌握的,方法的调用执行对应虚拟机栈中栈帧的出栈入栈。书中介绍了常见的内存溢出以及与其对应相关的Jvm参数。详细介绍了垃圾回收相关的知识背景,相关的算法。简单提到了对象的可达性分析,介绍了几种垃圾回收算法的区别以及实现思路,通过对比新生代和老年代不同的特点,采用不同的收集算法回去的更高的效率。介绍了单线程收集器Serial,主要解决新生代垃圾回收问题,但是垃圾回收时会暂停用户的线程。Serial的多线程版本ParNew可与CMS收集器搭配使用分别解决新生代和老年代的垃圾回收问题,CMS收集器可与用户线程并发执行,但是和新生代的选择搭配只能是Serial或者Parnew,又持续介绍了Parallel Scavenge和Parallel Old收集器分别解决新生代和老年代的垃圾回收所用算法分别是复制算法和标记清理。重点介绍了G1收集器的优势以及缺陷。后面介绍了一些常用的jdk命令用于监测程序的运行状态。调优安案例那里我认为主要了解下常用的jvm性能调节参数即可。详细介绍了class文件的结构,以及类加载的过程,以及对应每个阶段主要做的工作。详细介绍了类加载器的双亲委派模型。介绍了字节码执行的流程,以及一些字节码指令,这部分内容我觉得我还是有点难理解的。介绍了不同的编译器,源文件经过词法语法分析建立语法树,填充符号表,注解处理,语法分析我们常见的一些语法是否合法的监测,解语法糖到最后输出字节码生成class文件。解语法糖这里比如范型的类型擦除,其实我们知道方法的重载是不包含范型参数的其实也和这里有关。介绍了解释器和编译器的利弊,以及jvm如何指定运行的选择的编译器,默认是混合使用。后面简单介绍了多线程的内存模型,线程安全问题以及线程安全的实现方法。附录的jvm参数还是没事要看看的,争取在开发中可以用起来,因为看的比较浅,可能一些认知存在一些问题.