文章目录
- 0.个人感悟
- 1.JVM是什么
- 2.为什么要学习JVM
-
- [2.1 工作中忽略JVM原因](#2.1 工作中忽略JVM原因)
- [2.2 学习的作用](#2.2 学习的作用)
- 3.怎么学
-
- [3.1 《深入理解Java虚拟机》第三版 内容介绍](#3.1 《深入理解Java虚拟机》第三版 内容介绍)
0.个人感悟
- 真正接触JVM是工作中遇到的一张问题单,负责的服务在执行完任务后内存使用率一直居高不下。最后排查确实是相关代码的问题。因为对性能相关的知识了解不多,解决过程也挺吃力,也是从那时起意识到基础技术学习的重要性。我还记得提单的测试是谁Q.Q
- 往前走一步。反省自己缺乏JVM知识,一方面确实是JVM特性,自己工作更多聚焦业务,另一方面呢也是自己的定位和认知,平时缺乏对技术的学习的计划和坚持。现在想想,在完成本职工作的基础上,多往深的方向拓展学习下,工作中遇到相关问题可以去把握和实践,这样对于个人提升是比较好的。共勉。
- 题外话,读技术类书籍,推荐一本自己以前读过的一本书《如何阅读一本书》,对于如何看书还是很有帮助的
1.JVM是什么
JVM英文Java Virtual Machine,也称Java虚拟机,是一种能够执行Java字节码的抽象计算机。它是Java平台的核心组成部分。
- 可以执行Java字节码
- 是规范,有很多实现,比如HotSpot OpenJ9等
- 虚拟机层面屏蔽的硬件的差异
2.为什么要学习JVM
2.1 工作中忽略JVM原因
- 设计决定结果。Java设计理念"一次编写,到处运行",JVM作为核心组件也围绕这个理念实现,屏蔽了底层技术、物理机、操作系统差异,使得使用者可以聚焦业务开发
- 工作内容匹配。工作中很少遇到JVM相关问题,或者有对应的负责人解决处理
2.2 学习的作用
- 性能需求。JVM为了达到"所有硬件提供一致的虚拟平台",牺牲了一些硬件相关的性能特性。学习原理和调优有利于提升性能。
- 故障定位和预防。人为编写代码避免不了会出现内存溢出等问题;写出适合虚拟机运行和自优化的代码。
- 自我提升和面试QAQ
3.怎么学
理论+实践
理论部分,建议推荐挑选合适自己的书籍或者视频学习,重在坚持
实践部分,建议工作中多关注相关问题,主动找机会
3.1 《深入理解Java虚拟机》第三版 内容介绍
这里将目录列举出来,可以对书的内容有个大概了解,后续我也会按照这个目录进行学习总结,当然推荐大家看看原书
第一部分 走近Java
第1章 走近Java
1.1 概述
1.2 Java技术体系
1.3 Java发展史
1.4 Java虚拟机家族
1.5 展望Java技术的未来
1.6 实战:自己编译JDK
1.7 本章小结
第二部分 自动内存管理
第2章 Java内存区域与内存溢出异常
2.1 概述
2.2 运行时数据区
2.3 HotSpot虚拟机对象探秘
2.4 实战:OutOfMemoryError异常
2.5 本章小结
第3章 垃圾收集器与内存分配策略
3.1 概述
3.2 对象已死
3.3 垃圾收集算法
3.4 HotSpot算法细节实现
3.5 经典垃圾收集器
3.6 低延迟垃圾收集器
3.7 选择合适的垃圾收集器
3.8 实战:内存分配与回收策略
3.9 本章小结
第4章 虚拟机性能监控、故障处理工具
4.1 概述
4.2 基础故障处理工具
4.3 可视化故障处理工具
4.4 HotSpot虚拟机插件及工具
4.5 本章小结
第5章 调优案例分析与实战
5.1 概述
5.2 案例分析
5.3 实战:Eclipse运行速度调优
5.4 本章小结
第三部分 虚拟机执行子系统
第6章 类文件结构
6.1 概述
6.2 无关性的基石
6.3 Class类文件结构
6.4 字节码指令简介
6.5 共有设计,私有实现
6.6 Class文件结构的发展
6.7 本章小结
第7章 虚拟机类加载机制
7.1 概述
7.2 类加载的时机
7.3 类加载的过程
7.4 类加载器
7.5 Java模块化系统
7.6 本章小结
第8章 虚拟机字节码执行引擎
8.1 概述
8.2 运行时栈帧结构
8.3 方法调用
8.4 动态类型和语言支持
8.5 基于栈的字节码解释器执行过程
8.6 本章小结
第9章 类加载及执行子系统的案例与实战
9.1 概述
9.2 案例分析
9.3 实战:自己动手实现远程执行
9.4 本章小结
第四部分 程序编译与代码优化
第10章 前端编译与优化
10.1 概述
10.2 Javac编译器
10.3 Java语法糖的味道
10.4 实战:插入式注解处理器
10.5 本章小结
第11章 后端编译与优化
11.1 概述
11.2 即时编译器
11.3 提前编译器
11.4 编译器优化技术
11.5 实战:深入理解Graal
11.6 本章小结
第五部分 高效并发
第12章 Java内存模型与线程
12.1 概述
12.2 硬件的效率与一致性
12.3 Java内存模型
12.4 Java与线程
12.5 Java与携程
12.6 本章小结
第13章 线程安全与锁优化
13.1 概述
13.2 线程安全
13.3 锁优化
13.4 本章小结
本系列参考书籍:《深入理解Java虚拟机》第3版 周志明