我一直想知道:为什么paint()
方法不会生成StackOverflowError?
我知道paint()
必须在后台重复运行,但是什么限制它只能以计算机可以处理的速度调用它而不会产生StackOverflowError?
所以它不会重复paint()
到使用太多内存的程度?
答案 0 :(得分:6)
仅使用递归函数
发生堆栈溢出void paint() {
// code ...
paint();
}
堆栈:
-> stack overflow <-
paint()
...
paint()
paint()
paint()
...
main()
但在你的情况下会发生以下情况:
while (true) {
paint();
}
paint()
始终从同一堆栈帧调用