天天看点

《深入理解Java虚拟机》读书笔记

JVM 这块一直没有系统的学习,在极客时间上买了一个 "深入拆解Java虚拟机" 专栏,专栏是看完了,但是感觉跟看天书一样,基本都忘了。所以希望借助看这本书入个门。

整书 400 多页,包含了大量 JVM 配置参数与代码实例,我花了周末一天加三个晚上空余时间看完的,七八小时。读起来没那么累,但没去实践还是比较容易忘记。

书提到了这些知识模块:

Java 与虚拟机的发展历史

如何编译 JDK

Java内存区域

内存溢出异常

垃圾收集器与内存分配策略

虚拟机性能监控与故障处理工具

调优案例分析与实战

类文件结构

虚拟机类加载机制

虚拟机字节码执行引擎

类加载及执行子系统的案例与实战

程序编译与代码优化

高效并发

熟练使用 Java 语言,开始探索 Java 虚拟机的运行机制。

看这本书,就像在听作者说关于 Java 如何运行与优化的故事一样,结构清晰、条理性很好,适合入门 JVM。

书中包含了大量的参数配置以及实验代码,JVM 的学习对动手能力要求更高。不去实践配置调整虚拟机的启动参数、不写实验代码,是没法感受到 JVM 在底层到底是如何运行的,它会产生哪些影响,在什么情况下会出问题。

了解了 JVM 的内存分布、各种内存溢出导致的原因、垃圾收集算法与各种垃圾收集器的特点、虚拟机的性能监控与故障处理、class 文件结构、类编译加载执行以及各种优化,对我们平时写出高质量的 Java 代码是很有帮助的,尤其是遇到 "诡异" 的情况能够猜出个 123 来。

本地编译 JDK 是一件有挑战的事情,因为操作系统的环境问题、未公开代码的类库加载、使用了不同的编译器等各种问题,哪怕是一个中文目录也可能让你崩溃。得空自己 high 一把,应该其乐无穷。

了解底层不容易,但应该是每个 Java 程序员所向往的,正如作者说的,Java 与 C++ 之间有一堵由内存动态分配和垃圾收集技术所围成的高墙,墙外面的人想进去,墙里面的人却想出来。

JVM 中关于并发的部分,讲的不够详细、不够深入。

我这是看的第一版,后面准备看一下第二版,然后实践书里的参数以及实验代码,画个图分享出来。