Nwlapcug.com


Heap vs Stack in Java

Heap vs Stack in Java


Programmi Java utilizzano la memoria del computer in diversi modi. Se i programmatori Java hanno almeno una conoscenza di base di come la memoria è gestita all'interno del linguaggio, hanno molte più possibilità di creare applicazioni performanti, elevate. Come con molti aspetti della programmazione, non è necessario comprendere tutti i dettagli di implementazione del modello di gestione memoria di Java, ma afferrare i due tipi di base di memoria e il loro impatto sulla programmazione è utile.

Tipi e memoria

Le variabili Java modello componenti dati e codice in vari modi. Secondo il tipo e la portata di una variabile, può essere conservata nella memoria heap o stack. Memoria dello stack può essere pensato come a breve termine, heap come a lungo termine. Quando ti avvicini a un progetto di sviluppo in Java, si dovrà fare scelte progressive su come è possibile modellare gli elementi di dati, in grado di determinare in quali tipi di memoria sono memorizzati. Prendere queste decisioni con una comprensione delle implicazioni consente agli sviluppatori di massimizzare l'efficienza del programma.

Primitive

Tipi primitivi in Java sono base numero e tipi di carattere quali "int" per i valori integer primitivo e "char" per caratteri primitivi. Quando Java memorizza i tipi primitivi, le informazioni memorizzate si compone in gran parte dei valori di variabile, quindi la quantità di utilizzo della memoria tende ad essere più piccolo di tipi di oggetto. Se una variabile di tipo primitivo esiste solo come una variabile locale all'interno di un file di classe dell'applicazione, Java si memorizzerà in memoria dello stack.

Oggetti

Tipi di oggetti in Java includono i tipi forniti all'interno del linguaggio stesso e tipi definiti dai programmatori mediante dichiarazioni di classe. Quando un programma Java crea un oggetto, la JVM (Java Virtual Machine) alloca una sezione di memoria heap per esso. All'interno del programma, il nome della variabile assegnato per un tipo di oggetto agisce come un riferimento a questa posizione in memoria. Lo spazio per un oggetto all'interno di memoria heap può contenere i dati all'interno dell'oggetto, comprese le variabili di qualsiasi tipo, se primitivo o oggetto.

Ambito delle variabili

Ambito della variabile ha un impatto diretto sulla gestione della memoria all'interno di un programma Java. Per creare applicazioni efficienti, gli sviluppatori cercano di minimizzare la portata necessaria per qualsiasi data variabile o un elemento di dati. Ad esempio, di seguito viene illustrato un'istruzione condizionale con una variabile locale all'interno di esso:

int someNumber = 3;

if(SomeNumber>0) () {

int doubleNumber = someNumber * 2;

System.out.println(doubleNumber);

}

Questo banale esempio esegue un calcolo su una variabile, scrivere il risultato. La variabile che archivia il risultato del calcolo è dichiarata all'interno del condizionale, quindi non è accessibile in qualsiasi momento dopo il blocco condizionale. In generale, dando variabili la quantità minima di ambito necessario per poter funzionare correttamente aiuta a utilizzano programmi come poca memoria possibile.

Procedura di Garbage Collection

La JVM Garbage Collector gestisce la quantità di memoria disponibile per un programma. Se un oggetto o altro tipo non viene utilizzato all'interno di un'applicazione (ad esempio, se ha eseguito la sua funzione e non è più necessario), la memoria che è utilizzata dovrebbe idealmente essere reso disponibile nuovamente se necessario. Il Garbage Collector è in grado di riallocare la memoria heap se un'applicazione sta esaurendo le risorse di memoria. Se una variabile oggetto è fuori portata, la memoria potrebbe essere un candidato per la garbage collection.