Estratto del documento

Gestione della memoria stack

Lo stack o pila è una parte della memoria utilizzata per contenere i dati dei singoli metodi.

Meccanismo dello stack

Al momento della chiamata di un metodo, sullo stack viene memorizzato il punto di rientro dal metodo nel record di attivazione del metodo chiamante (quello sottostante); viene creato un nuovo record di attivazione; al quale vengono passati i parametri; al termine del metodo vengono memorizzati i risultati nel record di attivazione inferiore; viene distrutto il record di attivazione del metodo appena terminato; si prosegue l’esecuzione dal punto di rientro.

Al momento della chiamata di un metodo sullo stack, viene creata la nuova cella per il nuovo metodo (rec2) e nel rec1 si memorizza il punto di rientro (program counter). Avviene un passaggio di parametri dal rec1 al rec2 e il rec2 comincia ad eseguire le operazioni richieste, al termine delle quali ripasserà i valori al record sottostante (rec1) e verrà distrutto il rec2. Infine, si prosegue dal punto di rientro memorizzato.

Può capitare che per metodi ricorsivi, un metodo richiami se stesso e quindi eseguirà i punti 1-2-3 fino a risolvere le operazioni richieste, per poi eseguire i punti 4-5-6 lo stesso numero di volte.

Regole di promozione implicita ed esplicita

È possibile avere una promozione solo tra superclassi e sottoclassi o supertipi e sottotipi (i due oggetti devono stare sullo stesso ramo della gerarchia). Si ha promozione implicita quando si cerca di assegnare a una variabile di tipo superiore un’espressione di tipo inferiore, mentre è necessaria una promozione esplicita attraverso il “cast” per assegnare a una variabile di un tipo inferiore un’espressione (o un valore) di un tipo superiore. (Per fare un cast bisogna indicare tra parentesi il tipo della variabile alla quale si intende “castare” l’oggetto).

Stessa cosa per i tipi numerici primitivi (espliciti ed impliciti); con il tipo riferimento String, invece, saranno tutte promozioni implicite.

Eccezioni

Le eccezioni si dividono in controllate e non controllate. Quelle controllate appartengono alla classe Exception, quelle non controllate appartengono alla classe RuntimeException (che è una sottoclasse di Exception). I due gruppi si differenziano per il modo in cui vengono trattate dal compilatore, il quale controlla (per quelle controllate) che ogni costruttore o metodo che possa sollevare un’eccezione ne fornisca un trattamento esplicito per come gestirle (altrimenti segnala un errore). Il trattamento può avvenire tramite intercettazione (try-catch) o delegandola esplicitamente al chiamante mediante un’opportuna dichiarazione nell’intestazione del metodo.

Anteprima
Vedrai una selezione di 1 pagina su 2
Programmazione - programmazione Java 2 Pag. 1
1 su 2
D/illustrazione/soddisfatti o rimborsati
Acquista con carta o PayPal
Scarica i documenti tutte le volte che vuoi
Dettagli
SSD
Scienze matematiche e informatiche INF/01 Informatica

I contenuti di questa pagina costituiscono rielaborazioni personali del Publisher koganzjo di informazioni apprese con la frequenza delle lezioni di Programmazione e studio autonomo di eventuali libri di riferimento in preparazione dell'esame finale o della tesi. Non devono intendersi come materiale ufficiale dell'università Università degli Studi dell' Insubria o del prof Ferrari Mauro.
Appunti correlati Invia appunti e guadagna

Domande e risposte

Hai bisogno di aiuto?
Chiedi alla community