JVM的内存区域指的是JVM的运行时数据区。
主要分为方法区 、堆 、虚拟机栈 、本地方法栈 和程序计数器五个主要区域。
1.方法区(Method Area)
线程共享区域,存着类的结构信息、常量、静态变量。
2.堆(Heap)
最大的共享区,专门放对象和数组。
3.虚拟机栈(JVM Stack)
线程私有,存着局部变量、操作数栈、动态链接、方法出口信息、基本类型变量、对象引用。
4.本地方法栈(Native Method Stack)
线程私有,用来分配内存给非Java方法。
类似于虚拟机栈,专为JNI调用本地代码服务。
5.程序计数器(Program Counter Register)
每个线程都有一个独立的程序计数器,线程私有。
保存当前线程执行的Java 方法字节码指令的地方或者行号。