JAVA VIRTUAL MACHINE

 

Sommario

  1. Cos'è la Java Virtual Machine?
  2. La macchina virtuale Java legge codice scritto da un uomo in linguaggio Java?
  3. Cosa si intende per bytecode?
  4. Perché si parla di macchina virtuale e non semplicemente di macchina Java?
  5. Quali sono gli svantaggi/vantaggi della JVM rispetto ad un compilato?
  6. Cos'è un interprete?
  7. Quali sono le fasi di funzionamento di JVM ?
  8. Cos'è un class loader?
  9. Quando JVM termina?
  10. Quali sono i componenti di un tipico Runtime java?
  11. Com’è definito un PC register di una JVM?
  12. Cos’è Heap?
  13. Cos’è il Constant Pool?
  14. Quando vengono creati i frames?
  15. Quali caratteristiche ha il set di istruzioni della JVM?
  16. Che compito ha il Garbage Collector?
  17. Come faccio a sapere che quando il mio codice viaggia su rete nessuno lo ha manomesso?
  18. Cos'è un descrittore?
  19. Cos'è un bytecode veryfier?
  20. Posso invocare sincronamente un Garbage Collector?

 

Cos'è la Java Virtual Machine?

Macchina computazionale astratta che esegue programmi Java compilati.

Torna all'inizio

La macchina virtuale Java legge codice scritto da un uomo in linguaggio Java?

No, legge i bytecode.

 

Torna all'inizio

Cosa si intende per bytecode?

S’intende codice Java compilato che, caricato e verificato è  in grado di essere eseguito direttamente dall motore esecutivo, che è il cuore della Java Virtual Machine.

 

Torna all'inizio

Perché si parla di macchina virtuale e non semplicemente di macchina Java?

Perché non esiste realmente, ma è virtuale nel senso che è realizzata come SW sopra un HW e Sistema Operativo.

 

Torna all'inizio

Quali sono gli svantaggi/vantaggi della JVM rispetto ad un compilato?

Quali sono gli svantaggi/vantaggi della JVM rispetto ad un compilato?

 

Torna all'inizio

Cos'è un interprete?

Associato al precompilatore, costituisce una delle due parti principali di un compilatore: il precompilatore genera dal sorgente un modulo oggetto compilato ma interpretabile; sarà l’interprete che lo renderà eseguibile e lo lancierà.

 

Torna all'inizio

Quali sono le fasi di funzionamento di JVM ?

Start-up

Loading

Linking: Verifica

Linking: Preparazione

Linking: Risoluzione

Inizializzazione

Creazione di nuove istanze

Esecuzione

 

Torna all'inizio

Cos'è un class loader?

ClassLoader e sottoclassi implementano diverse politiche di loading per il recupero della forma binaria di un oggetto Class (classe/interfaccia) dato un particolare nome, le principali sono:

– Caching

– Prefetch basato su ipotesi d’impiego

– Gruppo di classi caricate congiuntamente

devono garantire identico output in caso di errore

– LinkageError

• ClassCircularityError

• ClassFormatError

• NoClassDefFoundError

Torna all'inizio

Quando JVM termina?

- JVM termina quando tutti i thread non deamon terminano

- Invocazione del metodo exit di Runtime o System ed ok del Security Manager

Possiamo chiamare runFinalizersOnExit (default = false)

 

Torna all'inizio

Quali sono i componenti di un tipico Runtime java?

PC register

Heap

Constant Pool

Area dei metodi

Stack metodi nativi

 

Torna all'inizio

Com’è definito un PC register di una JVM?

dimensione = 1 word

1 PC register per ogni thread se metodo non nativo il PC register

contiene indirizzo istruzione in esecuzione

se nativo valore nel PC = indefinito

 

Torna all'inizio

Cos’è Heap?

zona di memoria non necessariamente contigua condivisa tra thread. Si può definire anche come area dati runtime dalla quale viene allocata memoria per tutte le istanze della classe ed array.

Creato allo start-up e liberato da Garbage Collector.

Dimensione fissa o variabile dinamicamente, può lanciare OutOfMemoryError.

In JDK 1.02 di Sun dimensione heap puòesser settata allo start-up “-ms” e si può definire la dimensione massima “-mx”.

 

Torna all'inizio

Cos’è il Constant Pool?

E’ utilizzata come una “tabella dei simboli” per la rappresentazione del class file per ogni classe ed interfaccia

Torna all'inizio

Quando vengono creati i frames?

Allocati logicamente sulla base dell’organizzazione per-thread dello stack.Memorizzano:

variabili locali

– array o word

– variabili locali indirizzate per indice

stack di operandi

 

Torna all'inizio

Quali caratteristiche ha il set di istruzioni della JVM?

Istruzioni hanno un tipo

Operano sullo stack e sulle variabili locali

Non ortogonalità tra istruzioni e tipi di dati

Tutte le operazioni aritmetiche utilizzano lo stack

 

Torna all'inizio

Che compito ha il Garbage Collector?

Autonomamente esegue perlustrazione della memoria alla ricerca di oggetti non referenziati liberando memoria

Elimina alcuni errori classici di

programmazione

Caratteristica del linguaggio supportata da JVM

Invisibile al set di istruzioni

Deve eseguire metodo finalize degli oggetti liberati

 

Torna all'inizio

Come faccio a sapere che quando il mio codice viaggia su rete nessuno lo ha manomesso?

Attraverso una verifica che garantisce che

Nessuna forzatura di riferimento

Oggetti accessibili esclusivamente secondo il tipo appropriato

Test di parametri

Non avere overflow di stack

 

Applica queste regole secondo due teoremi:

Dato solo il tipo prima dell’esecuzione dell’istruzione il tipo di ritorno è determinato

Quando esistono due percorsi di esecuzioni che arrivano al medesimo punto, devono arrivarci con lo stesso tipo.

 

Torna all'inizio

Cos'è un descrittore?

Stringa che rappresenta il tipo di un field,metodo o array

es:

double d [ ] [ ] [ ] => [ [ [ D

 object mymethod(int i, double d, Thread t)=> (IDLjava/lang/Thread;)Ljava/lang/Object

Torna all'inizio

Cos'è un bytecode veryfier?

È il bytecode passato sotto verifica sotto i seguenti check:

1. Check del class file sintatticamente

2. Check del class file semanticamente

3. Check del bytecode

Check Runtime [ottimizzazione]

 

Torna all'inizio

Posso invocare sincronamente un Garbage Collector?

Si, vi sono tre start della Garbage Collection:

-          Sincrono

-          Asincrono

-          Esplicito

 

Torna all'inizio

autori Bertolini Marta & Girotto Cristiano.
Copyright © 2001  [FI3]. Tutti i diritti riservati.
Aggiornato il: 27-05-01 .