1.创建线程的时候就会创建一个虚拟机栈,生命周期与线程相同
2.虚拟机执行程序时,每个方法会创建一个栈帧,栈帧存放在虚拟机栈中,通过压栈出栈的方式进行方法调用。栈帧又分为以下几个区域,包括:局部变量表、操作数栈、动态连接、方法出口等
3.局部变量存放在虚拟机栈的局部变量表,其中引用型的变量,只存储引用地址
4.内存溢出(OutOfMemoneyError):用户的每个请求开启一个线程,每个线程创建一个虚拟机栈。当并发量大时,可能导致内存溢出。可以适当地把虚拟机栈的大小调小,减少内存的使用量来提高系统的并发量
5.栈内存溢出(StackOverFlowError):当虚拟机栈的大小调小后,又会引发方法调用深度的问题。因为每个方法都会生成一个栈帧,如果方法调用深时会创建大量栈帧,可能导致栈内存溢出