一、JVM内存区域划分1、线程私有程序计数器虚拟机栈本地方法栈2、线程共享堆方法区二、OOM三、StackOverFlow 一、JVM内存区域划分 1、线程私有 程序计数器存储当前线程正在执行的 Java 方法的 JVM 指令地址 虚拟机栈每个线程在创建时都会创建一个虚拟机栈,其内部保存一个个的栈帧(Stack Frame),对应着一次次的 Java 方法调用。 本地方法栈支持对本地方法的调用,也是每个线程都会创建一个。 2、线程共享 堆Java 对象实例 方法区存储原信息,类似:类结构信息,以及对应的运行时常量池、字段、方法代码等 二、OOM除了程序计数器,其他区域都可能出现OOM。 三、StackOverFlow虚拟机栈的深度超过-Xss设置的最大深度,会导致栈溢出。