JVM内存模型
内存区域划分
flowchart TD
    JVM内存[JVM内存]
    JVM内存 --> 方法区[方法区(Method Area)]
    JVM内存 --> 堆[堆(Heap)]
    JVM内存 --> 虚拟机栈[虚拟机栈(VM Stack)]
    JVM内存 --> 本地方法栈[本地方法栈(Native Stack)]
    JVM内存 --> 程序计数器[程序计数器(PC Register)]
各区域说明
| 区域 | 
作用 | 
配置参数 | 
| 方法区 | 
存储类信息、常量、静态变量 | 
-XX:MetaspaceSize | 
| 堆 | 
对象实例分配区域 | 
-Xms/-Xmx | 
| 虚拟机栈 | 
方法执行内存模型 | 
-Xss | 
| 本地方法栈 | 
Native方法执行 | 
 | 
| 程序计数器 | 
线程执行位置记录 | 
 | 
垃圾回收算法
- 标记-清除:产生内存碎片
 
- 复制算法:适合新生代,空间利用率50%
 
- 标记-整理:适合老年代,避免碎片
 
- 分代收集:新生代(复制)+老年代(标记整理)
 
类加载过程
加载 -> 验证 -> 准备 -> 解析 -> 初始化 -> 使用 -> 卸载
 
常用调优参数
# 堆内存
-Xms512m -Xmx1024m
# 新生代
-XX:NewRatio=2
-XX:SurvivorRatio=8
# GC日志
-XX:+PrintGCDetails
-XX:+PrintGCDateStamps
 
监控工具
- jps:查看Java进程
 
- jstat:监控GC情况
 
- jmap:堆内存分析
 
- jstack:线程栈分析
 
- VisualVM:图形化工具