我最近接受了一次采访,并被要求设计/实现堆栈跟踪功能。这就是我想到的。如何在出现故障时执行堆栈跟踪?
- 维护一个堆栈,它保存程序入口主要点的所有方法调用。
- 如果在执行过程中的任何一点出错,停止程序并弹出每个元素来打印整个堆栈。
我当时问了两个问题:
- 如何/在哪里将这个堆栈初始化?
- 如果不运行OOM,您将如何决定堆栈应该存储多少数据?为什么JVM不运行堆栈的OOM原因?
对于我说的第一个问题,堆栈应该是一个静态的,应该在程序开始时初始化。但我不确定第二个问题。我尝试阅读JVM如何执行此操作,但它有点复杂。我试图用Google搜索基本实现,但找不到任何。非常感谢,如果有人会指出我正确的方向,我到底应该寻找什么来回答这个问题。
可能重复的[Java默认堆栈大小](http://stackoverflow.com/questions/20030120/java-default-stack-size) – ControlAltDel
看看Throwables printStackTrace() – user489041
抱歉投票关闭,但我意识到这两个问题是不一样的。你可以在这个问题中找到关于堆栈分配的大量信息:http://stackoverflow.com/questions/20030120/java-default-stack-size – ControlAltDel