内存是非常重要的系统资源,是硬盘和CPU的中间仓库和桥梁,承载着操作系统和应用程序的实时运行。JVM 内存布局规定了 Java 在运行过程中内存申请、分配、管理的策略,保证了 JVM 的高效稳定运行。
【注:JVM内存布局(内存结构)和JMM内存模型是两个不同的概念】
图例所示是java8以上的内存布局,实际上堆区是内存的最大区域,内存布局(由上至下)分为:
- 本地方法栈(Native Method Stacks)
- 程序计时器(Programmer Counter Register)
- 虚拟机栈(JVM Stacks)
- 堆区(Heap)
- 元数据区(Metaspace)
- JVM代码缓存(CodeCache)
- Direct Memory(直接内存)
按线程共享来分类,图例如下: