深入JVM之方法调用是如何导致线程栈内存溢出的?

java.lang.StackOverflowError栈内存溢出是进行复杂运算时非常容易出现的错误

深入JVM之方法调用是如何导致线程栈内存溢出的?

 

深入JVM之方法调用是如何导致线程栈内存溢出的?

栈:

1、每个线程的虚拟机栈的大小是固定的,默认为1MB。2、每次线程调用一个方法,都会将本次方法调用的栈桢压入虚拟机栈里,这个栈桢里保存着方法内部的局部变量和其他信息。

栈内存溢出:

1、既然一个线程的虚拟机栈内存大小是有限的,那么假设不停的调用各种方法,对应的栈桢不停的压入栈中。

2、大量的栈桢会消耗完毕这个1MB的线程栈内存,最终就会导致出现栈内存溢出的情况。