Bootstrap

栈溢出和栈内存溢出的区别(一张图解释清楚)/ StackOverFlow和OutOfMemory的区别

目录

解释图:

何时发生栈内存溢出?

什么时候会发生栈溢出?

帮助记忆:


解释图:

上图是JVM内存模型中最为重要的三部分,方法区中存储的是类模板,堆中存放的是实例对象,每个线程都会生成一个栈

何时发生栈内存溢出?

对于一台服务器而言,每一个用户请求,都会产生一个线程来处理这个请求,每一个线程对应着一个栈,栈会分配内存,此时如果请求过多,这时候内存不够了,就会发生栈内存溢出

什么时候会发生栈溢出?

栈溢出是指不断的调用方法,不断的压栈,最终超出了栈允许的栈深度,就会发生栈溢出,比如递归操作没有终止,死循环

帮助记忆:

可以把内存比作是一个大箱子,栈是一个小箱子,栈溢出是指小箱子装不下了;而栈内存溢出是大箱子在也装不下小箱子了

更多精彩内容,欢迎关注公众号:stackoverflow

;