0%

JVM速成手册

topic_jvm_l

无论你是跟同事、同学、上下级、同行、或者面试官讨论技术问题的时候,很容易卷入JVM大型撕逼现场。为了能够让大家从大型撕逼现场中脱颖而出,最近我冥思苦想如何把知识点尽可能呈现的容易理解,方便记忆。于是就开启了这一系列文章的编写。

为了让JVM相关知识点能够形成一个体系arthinking将编写整理一系列的专题,以尽量以图片的方式描述相关知识点,并且最终把所有相关知识点串成了一张图。

image-20200214154250907

另外把文章列表和关键信息写到表格里面去了。

JVM系列文章

章节 关键词 相关思考
Java运行时数据区域是如何工作的 JVM内存布局 对象访问定位 1. JVM内存布局是怎么划分的?
2. JVM里面各个区直接是怎么配合工作的?
3. 对象在内存中是如何布局的?
4. 什么是操作数栈和局部变量表?可否在class文件中展示下?
5. 运行时常量和字符串常量有什么区别?
6. 对象访问定位方式有哪些?各有什么优点
Java垃圾回收机制 可达性分析 垃圾收集算法 垃圾收集器 1. 一个对象的一生经历了什么?
2. 如何判断对象是否可用?
3. 引用计数法和可达性分析算法各有什么优缺点?
4. 哪些对象可以作为GC ROOT?
5. 垃圾回收的时候如何快速寻找到根节点?(安全点和OopMap)
6. 垃圾回收算法有哪些?各有什么优缺点?
7. 有哪些垃圾手气,各有什么优缺点,适用什么场景
8. 何时触发MinorGC和MajorGC
9. 什么是空间分配担保
Java对象历险记 分配担保 空间分配 1. Java对象进入堆之后,它的一生都经历了什么?
Class文件十六进制背后的秘密 Class文件 反汇编 堆栈原理 1. 运行时常量池和静态常量池有什么区别?
2. Class文件里面都有什么内容?
3. Class文件反汇编之后的格式里面分别有什么,尝试解读里面方法中的汇编指令
4. 本地变量表和操作数栈是如何工作的
一篇图文彻底弄懂Class文件是如何被加载进JVM的 类加载器 加载 连接 初始化 1. Class.forName究竟是怎么获取Class对象的Class对象又是什么?
2. Class文件是如何被加载到JVM里面的?
3. 类变量是存在堆中还是存在方法区中?
4. 类构造器<clinit>方法什么时候执行?
一篇图文彻底弄懂类加载器与双亲委派机制 类加载器 双亲委派机制 1. 类加载器是怎么背创建出来的?
2. 什么是双亲委派机制?为什么要有这种机制?
3. Class实例和类加载器究竟是在Java Heap中,还是在方法区中?
4. 为何要有线程上下文类加载器
Java最大栈深度有多大 堆栈 1. Java最大栈深度多大
2. 程序中如何调优
Java代码编译方式和JVM三种执行模式 JIT javac 1. Java代码编译方式有哪些?
2. JVM执行方式有哪些?
JVM是如何进行方法调用的 静态分派 动态分派 1. JVM里面是如何进行方法调用的?
2. 什么是静态分派?
3. 什么是动态分派?
4. 怎么保证动态分派的执行效率?
5. 重写和重载的执行原理?
10分钟教你如何hack掉Java编译器 编译流程 javac JIT 注解处理器 1. 编译器一般编译流程
2. javac的编译流程是怎样的
3. 如何hack掉Java编译器
4. 运行时DI和编译期DI的区别
深入探索Java泛型的本质 泛型 1. 为什么需要泛型
2. Java代码在编译后是如何保存泛型信息的
3. Java泛型与C++、Python中的有何区别
4. 如何动态获取泛型类型
Java界的性能优化高手 编译器 解释器 JIT 1. javac做了什么优化
2. Java后端编译器的发展史
3. JIT是如何工作的
4. 效率与质量的衡量

在整理这个专题的时候,出了一个高效学习的介绍文章,这里也推荐给大家:碎片化知识盛行,学东西如何做到过目不忘

欢迎关注我的其它发布渠道