我最近接受了采访,并被要求设计/实现堆栈跟踪功能。这就是我想出来的。
对于我说的第一个问题,堆栈应该是静态的,应该在程序开始时初始化。但我不确定第二个问题。我试着看看JVM是如何做到的,但它有点复杂。我尝试谷歌搜索基本实现,但找不到任何。如果有人能指出我正确的方向来解决这个问题,我将非常感激。
答案 0 :(得分:0)
这是一个开放式的问题,这是我的看法:
无论如何,我的2¢。
答案 1 :(得分:0)
我不会在任何地方存储任何堆栈跟踪信息,因为它已经存储在每个线程的堆栈帧中。当需要堆栈跟踪(例如抛出异常)时,我将从堆栈帧构建它。
问题是我不确定堆栈帧是否具有执行此操作所需的所有信息。
答案 2 :(得分:0)
调用Thread.currentThread()。getStackTrace()返回可以打印到日志中的StackElement []。