java - 为什么paint()不会产生StackOverflowError?

标签 java stack-overflow

我一直想知道:为什么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/

相关文章:

java - Stackoverflow at Arrays.asList(str.split (",")) -> 由于错误的递归

java - 在相机预览上绘制矩形

java - 尝试使方法从控制台恢复输入

java - 标记上的类型语法错误、构造错误

使用 RegEx 解析大字符串时出现 java.lang.StackOverflowError

java - Dagger 2循环注入(inject)

java - 如何增加 Java 堆栈大小?

java - 是否可以在没有 P12 的情况下向 Android 上的 KeyChain 添加私钥 + 证书?

java - 添加到触发器的 JobData 未传递给 Quartz 中的作业

linux - gdb:检查堆栈和小端澄清