一般情况下,JVM有一个叫堆的运行时数据区域,以及一个叫栈的本地方法区域。堆内存是JVM所管理的内存中最大的一块,用来存储对象实例,几乎要占据整个JVM内存的大部分,而栈内存则是线程私有的,存放在其中的数据可以通过结构体的形式进行快速的读取和存入,栈内存不会随着方法的结束而释放,只有等得到程序的退出,栈内存才会销毁。堆和栈的大小可以通过JVM参数设置,在不同版本的JVM中略有差异,一般情况下,堆的大小比栈的大小要大几个数量级。另外,还有一块区域叫方法区,是JVM用来存储Class相关信息、静态变量、常量池等数据的内存区域。