1. 架构
JVM 的软件架构如下:
JAVA 内存布局如下图所示:
通过对典型应用的 JVM 内存进行拆解,如下:
Total: reserved=15538605KB, committed=14221757KB
Java Heap (reserved=9601024KB, committed=9601024KB)
Class (reserved=2095827KB, committed=1215827KB)
Metadata (reserved=995328KB, committed=993536KB)
## 每个类的元数据:类名、方法、字段描述
Class space (reserved=1048576KB, committed=170368KB)
## 为类加载器存储的数据预留的空间
Thread (reserved=43505KB, committed=10101KB)
## 包括线程栈和线程本地存储
stack (reserved=43505KB, committed=10101KB)
## 对每个线程分配的栈空间,大小可通过 -Xss 配置
Code (reserved=977086KB, committed=573642KB) # 为 JIT 编译器预留的内存
GC (reserved=495136KB, committed=495136KB) # 为 GC 预留的内存
Compiler (reserved=734KB, committed=734KB)
Internal (reserved=20654KB, committed=20654KB) #JVM 内部使用的内存,依赖于 JVM 的实现
Other (reserved=733088KB, committed=733088KB)
## Native Memory Tracking, Arena Chunk, Logging,
## Arguments, Module,Synchronizer, Safepoint, Wisp, null