1、线程请求的栈深度大于虚拟机所允许的深度,将抛出StackOverflowError 异常
—| 递归可能造成StackOverflowError
—| 不断创建线程可能造成StackOverflowError
2、栈的深度(大小类似于弹夹深度)可以自动扩展,扩展时无法申请到足够的内存时会抛出OutOfMemoryError异常
3、虚拟机栈一样,本地方法栈区域也会抛出StackOverflowError 和OutOfMemoryError
异常。
4、如果在堆中没有内存完成实例分配,并且堆也无法再扩展时,将会抛出OutOfMemoryError 异常
5、当方法区无法满足内存分配需求时,将抛出OutOfMemoryError 异常。
6、当常量池(方法区的一部分)无法再申请到内存时会抛出OutOfMemoryError 异常
7、各个内存区域的总和大于物理内存限制(包括物理上的和操作系统级的限制),从而导致动态扩展时出现OutOfMemoryError异常。