Sembra una domanda stupida, ma ho trovato che è difficile farlo bene. Ho chiesto a persone diverse ma non ho potuto ottenere una risposta ideale.Cosa succede dopo che un metodo viene chiamato in Java
Voglio sapere che cosa succede dopo aver chiamato un metodo normale in Java (Fornito in un ambiente a thread singolo).
mia comprensione è che:
- Tutte le variabili di stack correnti sono poped-up e memorizzati da qualche parte (dove?)
- La chiamata al metodo corrente arresta
- Gli argomenti del metodo appena chiamato sono spinti allo stack
- Il codice del metodo viene eseguito
- Al termine dell'esecuzione del metodo, lo stack viene nuovamente svuotato e il vecchio contenuto dello stack viene nuovamente ripristinato. (Cosa è successo se la funzione restituisce un valore?).
- Il codice continua con il metodo di chiamata.
Questa è una risposta molto incompleta e probabilmente errata. Qualcuno può fornire una descrizione più dettagliata?
Molte grazie.
Sono quasi sicuro che lo stack non è stato svuotato, altrimenti non avresti mai ottenuto StackOverflowException. – MightyPork
I passaggi (1) e (5) non si verificano. E c'è un altro passo, che è quello di spingere il valore di ritorno del metodo in pila (a meno che non sia ovviamente vuoto). –
Leggi http://www.javaworld.com/jw-06-1997/jw-06-hood.html - è tutto descritto in dettaglio. –