深入理解java虚拟机——笔记提纲

it2025-07-09  6

本文是对于深入理解java虚拟机的笔记和提纲整理

主要用于复习和知识点快速复习

第二章:内存结构

笔记:https://blog.csdn.net/qq_41157876/article/details/107189395

2.1 内存结构

方法区栈堆本地方法栈程序计数器

2.2 直接内存

2.3 对象创建过程

检查类加载分配内存地址(CAS / TLAB)地址数据清零设置对象头执行构造方法 <init>()等

2.4 对象内存布局

对象头(MarkWord + KlassWord + (数组))实例数据(父类数据 + 本类数据)padding

2.5 对象的访问定位

句柄访问直接指针访问(Hotspot使用)

第三章:垃圾回收

笔记:https://blog.csdn.net/qq_41157876/article/details/107748251

3.1 判断对象是否可回收

引用计数算法可达性分析算法

3.2 四种引用

强引用软引用弱引用虚引用

3.3 finalize()方法

3.4 垃圾回收

三个假说(朝生夕灭,越熬越久,跨代引用少)安全区域的概念GC分类垃圾回收算法(标记清除,标记整理,复制)jvm实际回收算法记忆集和卡表并发问题下如何标记GC ROOT(增量更新,原始快照)

3.5 垃圾回收器

SerialSerialOldParNewParallel ScavengeParallel OldCMS(运行流程,优缺点)G1(概述及运行流程,特点,其他细节,优缺点)

第四章:类加载

笔记:https://blog.csdn.net/qq_41157876/article/details/107798188

4.1 Java运行流程

运行期编译期

4.2 Class类文件结构

4.3 字节码指令

初始化和构造(<cinit>()V,<init>()V)方法调用(静态绑定(解析,非虚方法)/动态绑定(分派,虚方法)) invokevirtualinvokespecialinvokespecialinvokevirtual执行流程(多态原理)vtable和itable

4.4 类加载机制

加载(用类加载器将字节码载入方法区中)连接 校验(检验类是否符合jvm规范)准备(为静态变量分配内存并设置初始值)解析(将常量池内的符号引用替换为直接引用)初始化(执行static的内容 <cinit>(),懒加载)

4.5 类加载器

三个加载器(BootStrap / Extension / Application)双亲委派机制破坏双亲委派机制(线程上下文类加载器TCL)

第四章:前端与后端优化

笔记:https://blog.csdn.net/qq_41157876/article/details/107884006

5.1 前端优化(编译期优化) —— 语法糖

语法糖的概念前端优化 / 语法糖 泛型最常用的语法糖 拆箱装箱循环遍历 for( int a : list)变长参数 public static void main( String[] args )if语句优化默认构造器.....

5.2 后端优化(.class文件 转 二进制机器码 / 运行期)

解释器和即时编译器JIT优化技术 方法内联逃逸分析公共子表达式消除

第五章 高效并发

笔记:https://blog.csdn.net/qq_41157876/article/details/112605136

6.1 Java内存模型

缓存一致性(Cache Coherence)JAVA内存模型JMM

6.2 线程

Java线程的实现

6.3 线程安全与锁优化

最新回复(0)