Java - 保存/恢复调用堆栈

use*_*758 4 java callstack

是否可以在执行期间保存调用堆栈的状态,然后将堆栈恢复到该状态,在最顶层的方法调用中重新启动?

Hon*_*dek 10

我强烈建议改变你的范例.而不是操纵调用堆栈(并且很可能破坏您的JVM),考虑在算法中以某种方式合并"调用堆栈".

您可以使用策略/命令/撤消设计模式并将对象存储到您自己的逻辑堆栈中,您可以完全控制它们.

有一个相关的问题从递归到迭代的方法有很多好的答案.


Dav*_*ica 0

保存当前的调用堆栈非常简单。该类Thread有一些面向堆栈跟踪的函数。这很可能就是您正在寻找的 -

StackTraceElement[] stack = Thread.currentThread().getStackTrace();
Run Code Online (Sandbox Code Playgroud)

现在您已经保存了堆栈跟踪,以便稍后使用。我不确定恢复堆栈跟踪是什么意思。