* [内存模型](#内存模型)
* [1. 程序计数器](#1-程序计数器)
* [2. Java 虚拟机栈](#2-java-虚拟机栈)
* [3. 本地方法栈](#3-本地方法栈)
* [4. Java 堆](#4-java-堆)
* [5. 方法区](#5-方法区)
* [6. 运行时常量池](#6-运行时常量池)
* [7. 直接内存](#7-直接内存)
* [垃圾收集](#垃圾收集)
* [1. 判断一个对象是否可回收](#1-判断一个对象是否可回收)
* [1.1 引用计数](#11-引用计数)
* [1.2 可达性](#12-可达性)
* [1.3 引用类型](#13-引用类型)
* [1.3.1 强引用](#131-强引用)
* [1.3.2 软引用](#132-软引用)
* [1.3.3 弱引用](#133-弱引用)
* [1.3.4 虚引用](#134-虚引用)
* [1.3 方法区的回收](#13-方法区的回收)
* [1.4 finalize()](#14-finalize)
* [2. 垃圾收集算法](#2-垃圾收集算法)
* [2.1 标记 - 清除算法](#21-标记---清除算法)
* [2.2 复制算法](#22-复制算法)
* [2.3 标记 - 整理算法](#23-标记---整理算法)
* [2.4 分代收集算法](#24-分代收集算法)
* [3. 垃圾收集器](#3-垃圾收集器)
* [3.1 Serial 收集器](#31-serial-收集器)
* [3.2 ParNew 收集器](#32-parnew-收集器)
* [3.3 Parallel Scavenge 收集器](#33-parallel-scavenge-收集器)
* [3.4 Serial Old 收集器](#34-serial-old-收集器)
* [3.5 Parallel Old 收集器](#35-parallel-old-收集器)
* [3.6 CMS 收集器](#36-cms-收集器)
* [3.7 G1 收集器](#37-g1-收集器)
* [3.8 七种垃圾收集器的比较](#38-七种垃圾收集器的比较)
* [4. 内存分配与回收策略](#4-内存分配与回收策略)
* [4.1 优先在 Eden 分配](#41-优先在-eden-分配)
* [4.2 大对象直接进入老年代](#42-大对象直接进入老年代)
* [4.3 长期存活的对象进入老年代](#43-长期存活的对象进入老年代)
* [4.4 动态对象年龄判定](#44-动态对象年龄判定)
* [4.5 空间分配担保](#45-空间分配担保)
* [4.6 Full GC 的触发条件](#46-full-gc-的触发条件)
* [4.6.1 调用 System.gc()](#461-调用-systemgc)
* [4.6.2 老年代空间不足](#462-老年代空间不足)
* [4.6.3 空间分配担保失败](#463-空间分配担保失败)
* [4.6.4 JDK 1.7 及以前的永久代空间不足](#464-jdk-17-及以前的永久代空间不足)
* [4.6.5 Concurrent Mode Failure](#465-concurrent-mode-failure)
* [类加载机制](#类加载机制)
* [1 类的生命周期](#1-类的生命周期)
* [2. 类初始化时机](#2-类初始化时机)
* [3. 类加载过程](#3-类加载过程)
* [3.1 加载](#31-加载)
* [3.2 验证](#32-验证)
* [3.3 准备](#33-准备)
* [3.4 解析](#34-解析)
* [3.5 初始化](#35-初始化)
* [4. 类加载器](#4-类加载器)
* [4.1 类与类加载器](#41-类与类加载器)
* [4.2 类加载器分类](#42-类加载器分类)
* [4.3 双亲委派模型](#43-双亲委派模型)
* [JVM 参数](#jvm-参数)
* [GC 优化配置](#gc-优化配置)
* [GC 类型设置](#gc-类型设置)
# 内存模型