写点什么

阿里技术官珍藏 JVM 全优笔记,细节满分,吃透写精通没问题

作者:钟奕礼
  • 2022-12-07
    湖南
  • 本文字数:1450 字

    阅读完需:约 5 分钟

JVM 对实际简单开发的来说关联的还是不多,很少有人愿意花时间去学习 JVM,理解什么是 JVM,弄清 JVM 的工作原理。其实我个人认为这块是非常有必要认真学习的,对于中高级开发人员来说 JVM 就是 Java 基石,学习 JVM 也是为了帮助你更加深入的了解 Java 以及更好的解决线上排查问题。

tip:如果想要面试阿里等大厂,一定一定要学好 JVM


我随便挑选了几个阿里面试常问的 JVM 底层知识,大家可以看看能回答上几个:

  • JMM 是怎么执行字节码的?哪些数据放在栈?哪些数据放在堆?

  • 你的对象在 JVM 内存中如何分配?如何流转的

  • 每日百万交易的支付系统,如何设置 JVM 堆内存大小

  • 什么情况下 JVM 内存中的一个对象会被垃圾回收

  • JVM 中有哪些垃圾回收算法,每个算法各自的优劣

  • 每日上亿请求量的电商系统,老年代和年轻代垃圾回收参数如何优化

  • 每秒 10 万并发的 BI 系统是如何频繁发生 Young GC 的

以上问题大多数人都是知其然不知其所然,网上很多书籍也都是偏向于理论,这次我给大家来的这份 JVM 全优笔记可谓是理论与实战齐飞,吃透后简历上写精通完全没问题。



PART1:JVM 基础知识

  • JVM 从编译到执行

  • 从跨平台到跨语言

  • JVM 的发展(非重点)


PART2:JAVA 方法的运行与虚拟机栈

  • 运行时数据区域

  • 栈帧执行对内存区域的影响

  • 运行时数据区及 JVM 的整体内存结构


PART3:JVM 整体知识模块

  • 元空间

  • 运行时常量池

  • 直接内存(堆外内存)


PART4:自动内存管理

Java 内存区域与内存溢出异常

  • 概述

  • 运行时数据区域

  • HotSpot 虚拟机对象探秘

  • 实战:OutOfMemoryError 异常


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

  • 概述

  • 对象已死?

  • 垃圾收集算法

  • HotSpot 的算法细节实现

  • 经典垃圾收集器

  • 低延迟垃圾收集器

  • 选择合适的垃圾收集器

  • 实战:内存分配与回收策略



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

  • 概述

  • 基础故障处理工具

  • 可视化故障处理工具

  • HotSpot 虚拟机插件及工具


调优案例分析与实战

  • 概述

  • 案例分析

  • 实战:Eclipse 运行速度调优


PART5:虚拟机执行子系统

类文件结构

  • 概述

  • 无关性的基石

  • Class 类文件的结构

  • 字节码指令简介

  • 公有设计,私有实现

  • Class 文件结构的发展


虚拟机类加载机制

  • 概述

  • 类加载的时机

  • 类加载的过程

  • 类加载器

  • Java 模块化系统


虚拟机字节码执行引擎

  • 概述

  • 运行时栈帧结构

  • 方法调用

  • 动态类型语言支持

  • 基于栈的字节码解释执行引擎


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

  • 概述

  • 案例分析

  • 实战:自己动手实现远程执行功能


PART6:程序编译与代码优化

前端编译与优化

  • 概述

  • Javac 编译器

  • Java 语法糖的味道

  • 实战:插入式注解处理器


后端编译与优化

  • 概述

  • 即时编译器

  • 提前编译器

  • 编译器优化技术

  • 实战:深入理解 Graal 编译器


PART7:高效并发

Java 内存模型与线程

  • 概述

  • 硬件的效率与一致性

  • Java 内存模型

  • Java 与线程

  • Java 与协程


线程安全与锁优化

  • 概述

  • 线程安全

  • 锁优化


JVM 核心知识总结

Java 内存区域

  • 运行时数据区域

  • HotSpot 虚拟机对象探秘

  • 重点补充内容(String 类和常量池;String s1 = new String("abc");这句话创建了几个字符串对象?8 种基本类型的包装类和常量池)


JVM 垃圾回收

  • 揭开 JVM 内存分配与回收的神秘面纱

  • 对象已经死亡?

  • 垃圾收集算法

  • 垃圾收集器


JDK 监控和故障处理工具

  • JDK 命令行工具

  • JDK 可视化分析工具


类文件结构

  • Class 文件结构总结


类加载过程

  • 类加载过程

加载:



验证:


准备:



解析:


初始化:


  • 卸载


类加载器

  • 回顾一下类加载过程

  • 类加载器总结

  • 双亲委派模型

  • 自定义类加载器


JVM 内存分配的调优案例

  • AB 压测


  • 压测结果+结果分析

100 个并发用户/10 万请求量(总)--第一次

100 个并发用户/10 万请求量(总)

1000 个并发用户/10 万请求量(总)


  • 调优方案


  • 内存优化总结+推荐策略


  • 更多内容(篇幅有限)


最后

学习 JVM 建议大家按照这张图从上至下地来学习,只有把理论与实战结合后才能避免知识忘记,资料已整理成文档,免费获取,需要的小伙伴可以+ VX: mxk6072


用户头像

钟奕礼

关注

还未添加个人签名 2021-03-24 加入

还未添加个人简介

评论

发布
暂无评论
阿里技术官珍藏JVM全优笔记,细节满分,吃透写精通没问题_Java_钟奕礼_InfoQ写作社区