46 lines
861 B
Markdown
46 lines
861 B
Markdown
|
|
# 内存
|
||
|
|
|
||
|
|

|
||
|
|
|
||
|
|
## 直接内存
|
||
|
|
|
||
|
|
不受 JVM 堆管理的内存区域,通常与 NIO 有关,能够直接与操作系统内存进行交互,减少内存拷贝的开销
|
||
|
|
|
||
|
|
## 运行时数据区
|
||
|
|
|
||
|
|
### 线程私有
|
||
|
|
|
||
|
|
**程序计数器**
|
||
|
|
|
||
|
|
- 选取下一条需要执行的字节码指令
|
||
|
|
|
||
|
|
|
||
|
|
**虚拟机栈**
|
||
|
|
|
||
|
|
- 方法调用的数据需要通过栈进行传递
|
||
|
|
- 每一次方法调用后就会有一个对应的栈帧被压入栈中,当方法调用结束后弹出
|
||
|
|
|
||
|
|
*栈帧结构*
|
||
|
|
- 局部变量表
|
||
|
|
- 操作数栈
|
||
|
|
- 动态链接
|
||
|
|
- 方法返回地址
|
||
|
|
|
||
|
|
**本地方法栈**
|
||
|
|
|
||
|
|
- 执行 `Native` 方法
|
||
|
|
|
||
|
|
### 线程共享
|
||
|
|
|
||
|
|
**堆**
|
||
|
|
|
||
|
|
> Java 堆是垃圾收集器管理的主要区域,因此也被称作 `GC 堆`。
|
||
|
|
|
||
|
|
**方法区**
|
||
|
|
|
||
|
|
- 类信息
|
||
|
|
- 字段信息
|
||
|
|
- 方法信息
|
||
|
|
- 常量
|
||
|
|
- 静态变量
|
||
|
|
- ...
|