Recentemente ho avuto un colloquio e mi è stato chiesto di progettare/implementare le funzionalità di stacktrace. Questo è quello che mi è venuto in mente.Come implementare la traccia dello stack quando si verifica un errore?
- Mantiene uno stack che contiene tutte le chiamate di metodo dal punto di ingresso principale del programma.
- Se si verifica un errore in qualsiasi momento durante l'esecuzione, interrompere il programma e stampare l'intero stack facendo scattare ogni elemento.
Mi è stato poi chiesto due domande:
- Come/dove sarebbe questo stack essere inizializzato?
- Come decidereste la quantità di dati che lo stack deve memorizzare senza eseguire OOM? Perché la JVM non esegue mai OOM a causa dello stack?
Per la prima domanda, la pila deve essere statica e deve essere inizializzata all'inizio del programma. Ma non ero sicuro della seconda domanda. Ho provato a leggere come fa la JVM ma era un po 'complesso. Ho provato a cercare su google le implementazioni di base ma non sono riuscito a trovarne. Lo apprezzerei molto se qualcuno mi indicasse la giusta direzione su cosa esattamente dovrei cercare per rispondere a questo.
possibile duplicato del [Java dimensione dello stack di default] (http://stackoverflow.com/questions/20030120/java-default-stack-size) – ControlAltDel
Look at Throwables printStackTrace() – user489041
dispiace votato per chiudere, ma mi rendo conto questi due le domande non sono le stesse Puoi trovare molte informazioni sull'allocazione dello stack con questa domanda: http://stackoverflow.com/questions/20030120/java-default-stack-size – ControlAltDel