2012-06-07 21 views
5

Eventuali duplicati:
static allocation in java - heap, stack and permanent generationdove la memoria allocata quando dichiariamo statico?

è un piccolo confusione ... definente statico classe, metodi e variables.In questo tre casi in cui quindi la memoria allocata. ? Il mio capo ha familiarità con C, dice che solo le variabili sono nella memoria heap e resto (classi statiche e metodi statici) rimarrà nella memoria principale. è così sicuro? alcuna spiegazione.?

un altro in Android utilizzando la classe statica e metodi statici è una procedura consigliata?

+0

Duplicato: [http://stackoverflow.com/q/405364/1073063](http://stackoverflow.com/q/405364/1073063) e [http://stackoverflow.com/q/6569557/1073063 ] (http://stackoverflow.com/q/6569557/1073063). Moderatore: mi dispiace, mi sono collegato alla domanda sbagliata quando l'ho segnalato. – Pablo

risposta

5

Prova questo,

static members are stored in Method Area. 

istanze di classe e gli array vengono memorizzati nella memoria heap. La memoria heap viene anche chiamata memoria condivisa. Poiché questo è il posto in cui più thread condivideranno gli stessi dati.

Non-heap Memory 

Comprende ‘Method Area’ e altri memoria necessaria per l'elaborazione interna. Quindi qui il giocatore principale è 'Method Area'.

Come indicato nell'ultima riga, l'area metodo è parte della memoria non heap (area heap speciale). Memorizza strutture per classe, codice per metodi e costruttori. Struttura per classe significa costanti di runtime e static fields.

I tre precedenti (memoria heap, memoria non heap e area metodo) sono il gergo principale quando si parla di memoria e JVM.

Le istanze e gli array di classi sono memorizzati nella memoria heap. La memoria heap viene anche chiamata memoria condivisa. Poiché questo è il posto in cui più thread condivideranno gli stessi dati.

+0

No. I campi e le costanti statici sono memorizzati nell'oggetto Class, che si trova nell'heap. – EJP

3

Le variabili statiche vengono salvate nella stessa posizione della dichiarazione Classi (metodi e attributi, ecc.). 1). Le classi (caricate dai classloader) vanno in un'area speciale sull'heap chiamato Generazione permanente, e anche il campo statico va nello stesso posto in cui sono comuni a ciascuna istanza della classe. Per maggiori dettagli:

see this answer

Problemi correlati