1 / 40

Modello runtime

Modello runtime. Capitolo 21 febbraio 2004. Modello runtime e gestione della memoria. Il modello runtime è il modello al tempo di esecuzione dei programmi gestione della memoria e della capacità di elaborazione del calcolatore (da parte della JVM)

Download Presentation

Modello runtime

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Modello runtime Capitolo 21 febbraio 2004 Modello runtime

  2. Modello runtime e gestione della memoria • Il modello runtime è il modello al tempo di esecuzione dei programmi • gestione della memoria e della capacità di elaborazione del calcolatore (da parte della JVM) • allocazione delle aree di memoria per lo stato degli oggetti • esecuzione delle operazioni da parte degli oggetti • la gestione della memoria avviene per aree di memoria • la gestione della memoria è dinamica • basata sulle operazioni di allocazione e deallocazione di aree di memoria Modello runtime

  3. Esecuzione di metodi e costruttori • Il modello di gestione della memoria per l’esecuzione dei metodi (o costruttori) è basato sui record di attivazione • un record di attivazione memorizza le informazioni necessarie a una singola attivazione di un metodo • punto di ritorno • riferimento all’oggetto esecutore • variabili locali • esecuzione di un metodo • all’invocazione, viene allocato un record di attivazione • alla terminazione, il record di attivazione viene deallocato • I record di attivazione vengono gestiti mediante una pila di attivazione Modello runtime

  4. Esecuzione di metodi: un esempio • L’applicazione Quadruplo • class Quadruplo { • public static int somma(int a, int b) { • int c; // somma, 1 • c = a+b; // somma, 2 • return c; // somma, 3 • } • public static int doppio(int n) { • int d; // doppio, 1 • d = somma(n,n); // doppio, 2 • return d; // doppio, 3 • } • public static void main(String[] args) { • int a, b, c; // main, 1 • a = 2; // main, 2 • b = somma(a,a); // b = 4 // main, 3 • c = doppio(b); // c = 8 // main, 4 • } • } Modello runtime

  5. «oggetto classe» Quadruplo t=0 — avvio dell’esecuzione Quadruplo • L’esecuzione dell’applicazione Quadruplo viene richiesta mediante l’esecuzione del comando java Quadruplo Modello runtime

  6. main esecutore punto di ritorno a b c Quadruplo JVM t=1 — attivazione di main • La JVM chiede all’oggetto Quadruplo di eseguire il metodo main Modello runtime

  7. main esecutore punto di ritorno a b c Quadruplo JVM 2 t=2 — assegnazione a una variabile • Viene eseguita l’assegnazione a=2 Modello runtime

  8. somma esecutore punto di ritorno a b c Quadruplo main, 3, ... 2 2 main esecutore punto di ritorno a b c Quadruplo JVM 2 t=3 — invocazione e attivazione di somma • Il metodo main invoca il metodo somma Modello runtime

  9. somma esecutore punto di ritorno a b c Quadruplo main, 3, ... 2 2 4 main esecutore punto di ritorno a b c Quadruplo JVM 2 t=4 — esecuzione di una assegnazione • Viene eseguita l’assegnazione c=a+b Modello runtime

  10. somma esecutore punto di ritorno a b c Quadruplo main, 3, ... 2 4 2 4 main esecutore punto di ritorno a b c Quadruplo JVM 2 t=5 — terminazione di somma • Viene eseguita l’istruzione return c di somma Modello runtime

  11. 4 main esecutore punto di ritorno a b c Quadruplo JVM 2 4 t=6 — assegnazione del valore restituito • Viene completata l’assegnazione alla variabile b Modello runtime

  12. doppio esecutore punto di ritorno n d Quadruplo main, 4, ... 4 main esecutore punto di ritorno a b c Quadruplo JVM 2 4 t=7 — invocazione e attivazione di doppio • Il metodo main invoca il metodo doppio Modello runtime

  13. somma esecutore punto di ritorno a b c Quadruplo doppio, 2, ... 4 4 doppio esecutore punto di ritorno n d Quadruplo main, 4, ... 4 main esecutore punto di ritorno a b c Quadruplo JVM 2 4 t=8 — invocazione e attivazione di somma • Il metodo doppio invoca il metodo somma Modello runtime

  14. somma esecutore punto di ritorno a b c Quadruplo doppio, 2, ... 4 4 8 doppio esecutore punto di ritorno n d Quadruplo main, 4, ... 4 main esecutore punto di ritorno a b c Quadruplo JVM 2 4 t=9 — esecuzione di una assegnazione • Viene eseguita l’assegnazione c=a+b Modello runtime

  15. somma esecutore punto di ritorno a b c Quadruplo doppio, 2, ... 4 8 4 8 doppio esecutore punto di ritorno n d Quadruplo main, 4, ... 4 main esecutore punto di ritorno a b c Quadruplo JVM 2 4 t=10 — terminazione di somma • Viene eseguita l’istruzione return c di somma Modello runtime

  16. 8 doppio esecutore punto di ritorno n d Quadruplo main, 4, ... 4 8 main esecutore punto di ritorno a b c Quadruplo JVM 2 4 t=11 — assegnazione del valore restituito • Viene completata l’assegnazione alla variabile d Modello runtime

  17. doppio esecutore punto di ritorno n d Quadruplo main, 4, ... 8 4 8 main esecutore punto di ritorno a b c Quadruplo JVM 2 4 t=12 — terminazione di doppio • Viene eseguita l’istruzione return d di doppio Modello runtime

  18. 8 main esecutore punto di ritorno a b c Quadruplo JVM 2 4 8 t=13 — assegnazione del valore restituito • Viene completata l’assegnazione alla variabile c Modello runtime

  19. main esecutore punto di ritorno a b c Quadruplo JVM 2 4 8 t=14 — terminazione di main • Termina anche l’esecuzione del metodo main Modello runtime

  20. Esecuzione di metodi: discussione • Osservazioni • i record di attivazione sono relativi alle attivazioni dei metodi • ordine nell’allocazione/deallocazione di record di attivazione • in questo esempio è possibile pensare a una gestione statica della memoria • in generale non è possibile Modello runtime

  21. Gestione degli oggetti • Le aree di memoria per gli oggetti sono gestite nello heap • quando viene costruito un nuovo oggetto gli viene assegnata un’area di memoria per l’oggetto • la distruzione degli oggetti è più complessa • garbage collection – possono venire distrutti gli oggetti inutili Modello runtime

  22. Gestione di oggetti: un esempio • class GestioneOggetti { • public static void main(String[] args) { • Punto x, y; • x = new Punto(1,2); // main, 1 • y = new Punto(3,4); // main, 2 • x.trasla(5,6); // main, 3 • } • } Modello runtime

  23. «applicazione» GestioneOggetti t=0 — avvio dell’esecuzione di GestioneOggetti • L’esecuzione dell’applicazione GestioneOggetti viene richiesta mediante l’esecuzione del comando java GestioneOggetti Modello runtime

  24. «oggetto classe» Punto main esecutore punto di ritorno x y JVM «applicazione» GestioneOggetti t=1 — attivazione di main • La JVM chiede all’oggetto GestioneOggetti di eseguire il metodo main Modello runtime

  25. p1 : Punto x y «oggetto classe» Punto main esecutore punto di ritorno x y JVM «applicazione» GestioneOggetti t=2 — creazione di un oggetto • Bisogna eseguire la seguente assegnazione • x = new Punto(1,2); • viene creato l’oggetto p1 di tipo Punto Modello runtime

  26. p1 : Punto Punto esecutore punto di ritorno xx yy x y main, 1, ... 1 2 «oggetto classe» Punto main esecutore punto di ritorno x y JVM «applicazione» GestioneOggetti t=3 — invocazione del costruttore • All’oggetto p1 viene richiesta l’esecuzione del costruttore Modello runtime

  27. p1 : Punto Punto esecutore punto di ritorno xx yy x y 1 main, 1, ... 2 1 2 «oggetto classe» Punto main esecutore punto di ritorno x y JVM «applicazione» GestioneOggetti t=4 — esecuzione del costruttore • Vengono eseguite le istruzioni del costruttore Modello runtime

  28. p1 : Punto Punto esecutore punto di ritorno xx yy x y 1 p1 main, 1, ... 2 1 2 «oggetto classe» Punto main esecutore punto di ritorno x y JVM «applicazione» GestioneOggetti t=5 — terminazione del costruttore • Viene completata l’esecuzione dell’assegnazione alla variabile x Modello runtime

  29. p2 : Punto x y p1 : Punto x y 1 2 «oggetto classe» Punto main esecutore punto di ritorno x y JVM «applicazione» GestioneOggetti t=6 — creazione di un oggetto • Bisogna eseguire la seguente assegnazione • y = new Punto(3,4); • viene creato l’oggetto p2 di tipo Punto Modello runtime

  30. p2 : Punto x y p1 : Punto Punto esecutore punto di ritorno xx yy x y 1 main, 2, ... 2 3 4 «oggetto classe» Punto main esecutore punto di ritorno x y JVM «applicazione» GestioneOggetti t=7 — invocazione del costruttore • All’oggetto p2 viene richiesta l’esecuzione del costruttore Modello runtime

  31. p2 : Punto x y 3 4 p1 : Punto Punto esecutore punto di ritorno xx yy x y 1 main, 2, ... 2 3 4 «oggetto classe» Punto main esecutore punto di ritorno x y JVM «applicazione» GestioneOggetti t=8 — esecuzione del costruttore • Vengono eseguite le istruzioni del costruttore Modello runtime

  32. p2 : Punto x y 3 4 p1 : Punto Punto esecutore punto di ritorno xx yy x y 1 p2 main, 2, ... 2 3 4 «oggetto classe» Punto main esecutore punto di ritorno x y JVM «applicazione» GestioneOggetti t=9 — terminazione del costruttore • Viene completata l’esecuzione dell’assegnazione a y Modello runtime

  33. p2 : Punto x y 3 4 p1 : Punto trasla esecutore punto di ritorno dx dy x y 1 main, 3, ... 2 5 6 «oggetto classe» Punto main esecutore punto di ritorno x y JVM «applicazione» GestioneOggetti t=10 — invocazione e attivazione di trasla • Bisogna eseguire la seguente istruzione • x.trasla(5,6); Modello runtime

  34. p2 : Punto x y 3 4 p1 : Punto trasla esecutore punto di ritorno dx dy x y 6 main, 3, ... 8 5 6 «oggetto classe» Punto main esecutore punto di ritorno x y JVM «applicazione» GestioneOggetti t=11 — esecuzione di trasla • Vengono eseguite le istruzioni del metodo trasla Modello runtime

  35. p2 : Punto x y 3 4 p1 : Punto trasla esecutore punto di ritorno dx dy x y 6 main, 3, ... 8 5 6 «oggetto classe» Punto main esecutore punto di ritorno x y JVM «applicazione» GestioneOggetti t=12 — terminazione di trasla • Il metodo trasla termina Modello runtime

  36. p2 : Punto x y 3 4 p1 : Punto x y 6 8 «oggetto classe» Punto main esecutore punto di ritorno x y JVM «applicazione» GestioneOggetti t=13 — terminazione di main • Il metodo main termina Modello runtime

  37. p2 : Punto x y 3 4 p1 : Punto x y 6 8 «oggetto classe» Punto «applicazione» GestioneOggetti t=14 — distruzione di oggetti inutili • La JVM può decidere di distruggere p1 e p2 Modello runtime

  38. p2 : Punto x y 3 4 p1 : Punto x y 6 8 «oggetto classe» Punto «applicazione» GestioneOggetti t=15 — distruzione di oggetti inutili • Anche gli oggetti Punto e GestioneOggetti possono essere distrutti Modello runtime

  39. Gestione di oggetti: discussione • Discussione • riferimenti a oggetti come puntatori ad aree di memoria • this è l’esecutore del metodo (o costruttore) • le variabili d’istanza hanno una vita più lunga delle variabili locali • in Java, gli effetti collaterali avvengono solo nello heap Modello runtime

  40. Vita delle variabili • Per vita di un oggetto o variabile si intende l’intervallo di tempo in cui è allocata la corrispondente area di memoria • Variabili d’istanza • la loro vita coincide con quella dell’oggetto istanza a cui sono associate • possono essere accedute da metodi d’istanza e costruttori • Variabili locali • la loro vita coincide con l’attivazione del metodo (o costruttore) per il quale vengono allocate • possono essere accedute solo da quella attivazione di metodo (o costruttore) Modello runtime

More Related