我最近接受了一次採訪,並被要求設計/實現堆棧跟蹤功能。這就是我想到的。如何在出現故障時執行堆棧跟蹤?
- 維護一個堆棧,它保存程序入口主要點的所有方法調用。
- 如果在執行過程中的任何一點出錯,停止程序並彈出每個元素來打印整個堆棧。
我當時問了兩個問題:
- 如何/在哪裏將這個堆棧初始化?
- 如果不運行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