发生的原因:栈所能容纳的栈帧是固定的,当调用方法或者线程时,jvm会向栈中压入一个栈帧,当栈帧数量超过一定数量则会发生错误
发生的情形:
- 调用(没有结束递归条件的)递归函数
- 创建大量的线程或方法,使得栈帧超量
发生的原因:当程序运行过程中,无法申请到足够的内存就会发生错误
发生的情形:
- 栈内存溢出:创建了太多线程,没有足够的空间为一个新的线程分配空间
- 堆内存溢出:创建了太多对象,没有足够的空间为一个新的对象分配空间
- 方法区内存溢出:创建了Java类的相关信息,没有足够的空间为新定义的变量分配空间



