我一直想知道:为什么paint()
方法不生成StackOverflowError?
我知道 paint()
必须在后台重复运行,但是是什么限制它只能以计算机可以处理的速度调用它而不生成 StackOverflowError?
这样它就不会重复 paint()
以至于使用太多内存?
最佳答案
堆栈溢出仅发生在递归函数中
void paint() {
// code ...
paint();
}
堆栈:
-> stack overflow <-
paint()
...
paint()
paint()
paint()
...
main()
但在您的情况下,发生了以下情况:
while (true) {
paint();
}
paint()
始终从同一堆栈帧调用
关于java - 为什么paint()不会产生StackOverflowError?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21138818/