Salve,
ho notato con molto rammarico che le strutture dati di java.util non sono affatto efficienti in spazio. Ad esempio per
codice:
List<Integer> L = new ArrayList<Integer>();
for(int i=0;i<10000000;i++)
L.add(i);
10 milioni di interi allocati in questo modo ho un consumo di memoria (secondo il windows task manager) totale di 420mb. Utilizzando invece gli array:
codice:
int L[] = new int[10000000];
for(int i=0;i<10000000;i++)
L[i]=i;
il cosumo scende a 46mb che considerando quanto effettivamente occupano gli interi (che sono a 32bit) più altre informazioni conservate eventualmente dalla jvm fanno un costo praticamente pari a quello atteso...
La situazione non migliora con Vector e peggiora di molto con LinkedList...qualcuno ha qualche spiegazione in merito? Considerando che ho un problema in cui ho a che fare con qualcosa nell'ordine delle centinaia di milioni di interi, e che ho bisogno di strutture dati per la loro gestione, mi trovo alquanto in difficoltà!