HotSport虚拟机中并不区分虚拟机栈和本地方法栈。关于虚拟机栈和本地方法栈,在Java虚拟机规范中描述了两种异常:
如果线程请求的栈深度大于虚拟机所允许的最大深度,将抛出StackOverflowError异常。如果虚拟机在扩展栈时无法申请到足够的内存空间,则抛出OutOfMemoryError异常。
public class JavaVMStackSOF { private int stackLength = 1; public void stackLead(){ stackLength++; stackLead(); } public static void main(String[] args) { JavaVMStackSOF javaVMStackSOF = new JavaVMStackSOF(); try { javaVMStackSOF.stackLead(); } catch (Throwable e) { System.out.println("stack length: "+javaVMStackSOF.stackLength); e.printStackTrace(); } }}