举例栈溢出的情况
当栈大小固定时,不断增加栈帧数量直至栈所能容纳的最大值,就会发生StackOverflowError异常。
当栈的大小可以动态扩展时,当栈扩展至内存不足时,会发生OutOfMemoryError异常。
设置栈大小,就能保证不出现溢出吗?
不能。例如:递归死循环时,不论设置栈多大,都会出现栈溢出的情况。
分配的栈内存越大越好吗?
不是,分配的栈内存越大会导致可创建的线程数量减少以及其他区域可用空间变小,进而影响程序的执行。
垃圾回收是否涉及到虚拟机栈?
不涉及,栈的出栈操作就相当于丢弃垃圾。
方法中定义的局部变量表是否线程安全?
具体问题具体分析:
尚硅谷宋红康JVM全套教程-虚拟机栈的5道面试题