内存是非常重要的系统资源,是硬盘和cpu的中间仓库和桥梁,承载着操作系统和应用程序的实时运行。JVM内存布局规定了Java在运行过程中内存的申请、分配、管理的策略,保证JVM高效稳定运行。不同的JVM对于内存的划分和管理机制存在着部分差异。
Java虚拟机定义了若干种程序运行期间会使用的运行时数据区,其中一些会随着虚拟机的创建而创建,随着虚拟机的退出而销毁。另外一些则是与线程一一对应,这些与线程对应的数据区会随着线程开始而创建,随着线程结束而销毁。
如图:
运行时方法区主要包括:方法区、程序计数器、本地方法栈、堆、虚拟机栈
见右边图,堆空间和元空间方法区(JDK1.8及之后称之为元空间)是每个线程共有的。而程序计数器、本地方法栈、虚拟机栈则是每个线程单独私有的。