Java内存结构
- 程序计数器
- 虚拟机栈
- 本地方法栈
- 堆
- 方法区
Java 内存模型(JMM)
参考:再有人问你Java内存模型是什么,就把这篇文章发给他。
JVM内存结构 VS Java内存模型 VS Java对象模型
Java 类加载
参考:Java 类加载器(ClassLoader)的实际使用场景有哪些?
类加载的详细过程
双亲委派机制
定义:当一个类加载器去加载类时先尝试让父类加载器去加载,如果父类加载器加载不了再尝试自身加载。在虚拟机启动的时候会初始化 BootstrapClassLoader,然后在 Launcher 类中去加载 ExtClassLoader、AppClassLoader,并将 AppClassLoader 的 parent 设置为 ExtClassLoader,并设置线程上下文类加载器。
破坏双亲委派
判断一个对象是否无效
- 引用计数法
- 可达性分析法
引用计数法存在循环引用问题,Java 已经不采用了。
GC roots 哪些对象
- 虚拟机栈(栈帧中的本地变量表)中引用的对象
- 方法区中类静态属性引用的对象
- 方法区中常量引用的对象
- 本地方法栈中JNI(即一般说的native方法)中引用的对象
GC 算法,垃圾搜集器
- 标记 -清除算法
- 复制算法
- 标记-压缩算法
- 分代收集算法