前言
相信很多人一开始接触 Java 虚拟机只是因为面试需要用到,所以硬着头皮去学。所以很多人对于为什么要学虚拟机这个问题,一致的答案皆是:因为面试。(我也是)‘手动狗头’。
大家先来看看JVM9连问大家能答出几问:
反正小编当时被怼的一脸懵逼
其实学习JVM并不仅仅在于面试,而在于更深入地理解 Java 这门语言,以及为未来排查线上问题打下基础。下面我们来看看官方的定义。
随着Java以及Java社区的不断壮大,Java也早已不再是简简单单的一门计算机语言了,它更是一个平台、一种文化、一个社区。
作为一个平台
Java虚拟机扮演着举足轻重的作用。除了Java语言,任何一种能够被编译成字节码的计算机语言都属于Java这个平台。
作为一种文化
Java 几乎成为了“开源”的代名词。
作为一个社区
Java 拥有无数的开发人员,有数不清的论坛和资料。它已经俨然成为了一个良好而庞大的生态系统。而这个生态系统的核心还是Java 虚拟机。
这篇文章就给大家分享出三份JVM文档,(能吃透这三份文档也能算半个大佬了(手动狗头))
- 1.JVM故障诊断与性能优化
- 2.JVM G1源码分析和调优
- 3.JVM与性能优化知识点整理
JVM故障诊断与性能优化
第1章 初探Java 虚拟机
- 知根知底:追溯Java的发展历程
- 跨平台的真相: Java虚拟机来做中介
- 一切看我的:Java语言规范
- 一切听我的: Java虚拟机规范
- 数字编码就是计算机世界的水
- 抛砖引玉:编译和调试虚拟机
第2章 认识Java虚拟机的基本结构
- 谋全局者才能成大器: 看穿Java虚拟机的架构
- 小参数能解决大问题:学会设置Java虚拟机的参数
- 对象去哪儿: 辨清Java堆
- 函数如何调用: 出入Java栈
- 类去哪儿了: 识别方法区
第3章 常用Java 虚拟机参数
- 一切运行都有迹可循:掌握跟踪调试参数
- 让性能飞起来:学习堆的配置参数
- 别让性能有缺口:了解非堆内存的参数配置
- Client 和Server二选一:虚拟机的工作模式
第4章垃圾回收概念与算法
- 内存管理清洁工:认识垃圾
- 清洁工具大PK:讨论常用的垃圾回收算法
- 谁才是真正的垃圾: 判断可触及性
- 垃圾回收时的停顿现象: Stop-The-World 案例实战
第5章 垃圾收集 器和内存分配
- 一心一意一件事:串行回收器
- 人多力量大: 并行回收器
- 一心多用都不落下: CMS回收器
- 未来我做主: G1回收器
- 回眸:有关对象内存分配和回收的一些细节问题
- 温故又知新: 常用的GC参数
- 动手才是真英雄:垃圾回收器对Tomcat性能影响的实验
第6章 性能监控工具
- 有我更高效: Linux下的性能监控工具
- 用我更高效: Windows 下的性能监控工具
- 外科手术刀: JDK性能监控工具
- 我是你的眼: 图形化虚拟机监控工具JConsole
- 一目了然:可视化性能监控工具Visual VM
- 来自JRockit的礼物:虚拟机诊断工具Mission Corto
第7章 分析Java堆
- 对症才能下药:找到内存溢出的原因
- 无处不在的字符串: String 在虚拟机中的实现
- 虚拟机也有内窥镜: 使用MAT分析Java堆
- 筛选堆对象: MAT对OQL的支持
- 更精彩的查找: Visual VM对OQL的支持
第8章 锁与并发
- 安全就是锁存在的理由:锁的基本概念和实现
- 避免残酷的竞争: 锁在Java虚拟机中的实现和优化
- 应对残酷的竞争: 锁在应用层的优化思路
- 无招胜有招: 无锁
- 将随机变为可控: 理解Java内存模型
第9章 Class 文件结构
- 不仅跨平台,还能跨语言:语言无关性
- 虚拟机的基石: Class 文件
- 操作字节码: 走进ASM
第10章 Class 装载系统
- 来去都有序: 看懂Class文件的装载流程
- 一切Class从这里开始:掌握ClassLoader
第11章 字节码执行
- 代码如何执行: 字节码执行案例
- 执行的基础: Java虚拟机常用指令
- 更上一层楼:再看ASM
- 谁说Java太刻板: Java Agent运行时修改类
- 与时俱进:动态函数调用
- 跑得再快点:静态编译优化
- 提高虚拟机的执行效率: JIT及其相关参数
为了更好地了解和使用Java,越来越多的开发人员开始关注Java虚拟机(JVM)的实现技术,其中垃圾回收(也称垃圾收集)是最热门的技术点之一。目前G1作为JVM中最新、最成熟的垃圾回收器受到很多的人关注。
篇幅限制只能以这样的形式展示出来啦,这三份文档已经打包好上传百度网盘了
JVM G1源码分析和调优
第1章 垃圾回收概述
- Java发展概述
- 常见术语
- 回收算法概述
- JVM垃圾回收器概述
第2章 G1的基本概念
- 分区
- G1停顿预测模型
- 卡表和位图
- 对象头
- 内存分配和管理
- 线程
- 日志解读
- 参数介绍和调优
第3章 G1的对象分配
- 对象分配概述
- 快速分配
- 慢速分配
- G1垃圾回收的时机
- 参数介绍和调优
第4章 G1的Refine线程
- 记忆集
- Refine 线程的功能及原理
- Refinement Zone
- RSet 涉及的写屏障
- 日志解读
- 参数介绍和调优
第5章 新生代回收
- YGC算法概述
- YGC代码分析
- YGC算法演示
- 日志解读
- 参数介绍和调优
第6章 混合回收
- 并发标记算法详解
- 并发标记算法的难点
- G1中混合回收的步骤
- 混合回收中并发标记处理的线程
- 并发标记算法演示
- GC活动图
- 日志解读
- 参数优化
第7章 Full GC
- Evac失败
- 串行FGC
- 并行FGC
- 日志解读
- 参数介绍和调优
第8章 G1中的引用处理
- 引用概述
- 可回收对象发现
- 在GC时的处理发现列表
- 重新激活 可达的引用
- 日志解读
- 参数介绍和调优
第9章 G1的新特性:字符串去重
- 字符串去重概述
- 日志解读
- 参数介绍和调优
- 字符串 去重和String.intern的区别
- String.intern 中的实现
第10章 线程中的安全点
- 安全点的基本概念
- G1并发线程进人安全点
- 解释线程进人安全点
- 编译线程进人安全点
- 正在执行本地代码的线程进入安全点
- 安全点小结
- 日志分析
- 参数介绍和调优
第11章 垃圾回收器的选择
- 如何衡量垃圾回收器
- G1调优的方向
第12章 新一代垃圾回收器
- Shenandoah
- ZGC
篇幅限制只能以这样的形式展示出来啦,这三份文档已经打包好了
JVM与性能优化知识点整理
一、JVM内存区域划分
- 程序计数器(线程私有)
- Java栈(线程私有)
- 本地方法栈(线程私有)
- 堆(线程共享)
- 方法区(线程共享)
- 直接内存(线程共享)
二、JVM执行子系统
- Cass类文件结构
- 字节码指令
- 类加载机制
- 类加载器
- Tomcat类加载机制
- 方法调用详解
三.垃圾回收器和内存分配策略
- Java中是值传递还是引用传递?
- 引用类型
- 基本垃圾回收算法
- 分代处理垃圾
- JAVA中垃圾回收GC的类型
四、编写高效优雅Java程序
- 面向对象
- 方法
- 通用程序设计
五、性能优化
- 常用的性能评价/测试指标
- 常用的性能优化手段
- 应用服务性能优化
这三份文档可以说包含了JVM的方方面面,篇幅限制只能以这样的形式展示出来啦,这三份文档已经打包好了