Questo è più da una comprensione generale di come funziona la memoria, ma:
Se le risorse non sono stati smaltiti, non si possono usare perché sono ancora in fase ripresi. Quando le risorse non sono disposte/raccolte di dati inutili/non sono utilizzabili perché c'è qualcos'altro che usa quella memoria. Tuttavia, una volta fuori dal campo di applicazione, dovrebbe in effetti essere smaltito. Se non lo è, allora questo è un ma nella JVM che risulterebbe in un memory leak.
Per la seconda parte, se si intendono i blocchi di memoria tra gli elementi, tutto dipende dalla presenza o meno di spazio. Ancora una volta, non sono al 100% su come la JVM gestisca la memoria, ma se hai bisogno di due blocchi di memoria e c'è solo un blocco tra Z1
e Z2
allora no, avrebbe bisogno di uno spazio contiguo in memoria.
fonte
2011-01-11 12:20:38