Domande da Colloquio 2: metodi statici e garbage collector

Marco Ballante 05/12/2012 4 Commenti

intervista ad un programmatore in Inghilterra

Gli argomenti di cui parleremo oggi, riguardano proprio due domande che mi sono state poste in uno degli ultimi colloqui.

  1. metodi statici
  2. garbage collector

La domanda sui metodi statici non mi ha messo in difficoltà, ma l'altra un po' si, per cui occorre prepararsi anche su cosa fa e come funziona il GC di Java.

Metodi e variabili Statiche

Un metodo statico è un metodo che appartiene alla classe. Per chiamare un metodo statico non occorre l'istanza della classe che lo contiene e la sintassi è la seguente: NomeClasse.metodo()

Un metodo statico non può accedere a variabili di istanza, ma solamente a variabili di classe statiche.

Solitamente si usa per creare metodi di utilità, che non necessitano di usare variabili di istanza.

Una variabile statica invece, è una variabile di classe, accessibile da tutte le istanza della classe che la contiene. Spesso è usata con final, per creare una costante.

Garbage collector

Una delle particolarità di Java che lo hanno reso celebre come linguaggio, è appunto la gestione automatica della memoria. Questo significa che il programmatore non si deve occupare di liberare le locazioni di memoria, perchè a questo pensa il Garbage collector.

Tramite l'attività di Garbage collection, il GC deve trovare e capire quali oggetti contenuti in memoria possono essere eliminati, per liberare nuovo spazio.

Ma come funziona?

Quando un oggetto viene creato, mediante la parola chiave new, l'oggetto verrà assegnato ad una variabile con una certa visibilità. Il GC, considerando la visibilità della variabile che fa riferimento all'oggetto, capisce quando un oggetto è ancora in uso o meno.

Se avete bisogno di ulteriori approfondimenti potete fare una vitita qui

Come sempre, se volete aggiungere qualcosa, i vostri commenti sono i benvenuti.

Ti è piaciuto questo post, Condividilo!

Articoli Correlati

Commenti

Ciro Ascione - 14/01/2013

salve a tutti,
inizio dal GC e appena avrò un pò di tempo :) proverò ad integrare gli appunti dell'amico Marco su elementi statici e contesti statici.
Il GC non è altro che un modulo formato da una serie di threads che tramite introspezione invocano il classloader della JVM, ed una "tabella" nella quale sono riportati i riferimenti agli oggetti creati, in questa fase di "query" quando trovano un riferimento a null cercano di liberare lo spazio riservato di memoria HEAP (invocando prima di eliminare del tutto l'oggetto in questione il suo metodo finalize()). IN definitiva non è altro che un thread. :)
Per quanto riguarda invece la "pulizia" e l'occupazione di oggetti String (quando non viene utilizzato l'operatore new!) il discorso è un pò diverso, perchè in questo caso la gestione di memoria passa allo string pool (da qui errori di outofmemory di tipo permgen) va beh questo è un altro film ....
Spero di esservi stato di aiuto ad immaginare il GC, per quanto mi riguarda lo immagino come quel gioco dei pesciolini che ruotando aprono la bocca per prendere l'amo, ovviamenti i nostri oggetti java sono tutte esche per il GC ....
byeee

Gaetano D'Orsi - 29/10/2014

@Ciro confermo complimenti! mi salverò questi tuoi appunti, ogni tanto possono sempre far comodo un ripasso.

Angelo La Bruna - 19/12/2014

in realtà basta considerare i puntamenti a tali oggetti creati, se non ci sono puntamenti a che servono questi oggetti meglio cancellarli

Marco Ballante - 10/06/2014

Grazie @Ciro, una bellissima spiegazione.

Lascia un Commento

Per lasciare un commento devi essere autenticato Accedi

Javajob.it © 2017 - Javajob.it è un progetto realizzato da Gsoftware srls