Sto prendendo in carico alcune applicazioni da uno sviluppatore precedente. Quando eseguo le applicazioni tramite Eclipse, vedo l'utilizzo della memoria e le dimensioni dell'heap aumentano molto. Dopo ulteriori indagini, vedo che stavano creando un oggetto sovrapposto in un ciclo e altre cose.Quali sono le migliori pratiche di gestione della memoria Java?
Ho iniziato a passare e fare un po 'di pulizia. Ma più ho attraversato, più domande ho avuto "questo farà davvero qualcosa?"
Ad esempio, invece di dichiarare una variabile al di fuori del ciclo menzionato sopra e semplicemente impostando il suo valore nel ciclo ... hanno creato l'oggetto nel ciclo. Quello che voglio dire è:
for(int i=0; i < arrayOfStuff.size(); i++) {
String something = (String) arrayOfStuff.get(i);
...
}
contro
String something = null;
for(int i=0; i < arrayOfStuff.size(); i++) {
something = (String) arrayOfStuff.get(i);
}
Am I corretto dire che il ciclo di fondo è meglio? Forse mi sbaglio.
Inoltre, dopo il secondo ciclo precedente, ho impostato "qualcosa" su null? Potresti cancellare un po 'di memoria?
In entrambi i casi, quali sono le migliori pratiche di gestione della memoria che potrei seguire per mantenere basso l'utilizzo della memoria nelle mie applicazioni?
Aggiornamento:
Apprezzo tutti quanti commenti finora. Tuttavia, non stavo davvero chiedendo i loop precedenti (anche se con il tuo consiglio sono tornato al primo ciclo). Sto cercando di ottenere alcune best practice che posso tenere d'occhio. Qualcosa sulla falsariga di "quando hai finito di usare una collezione, cancellala". Ho solo bisogno di assicurarmi che la maggior parte della memoria non venga utilizzata da queste applicazioni.
Modifica la tua: come tre persone hanno detto finora, profila! –
Sto cercando alcune pratiche specifiche da utilizzare, quindi non devo avere qualcuno che lo descriva. Preferirei svilupparlo in modo appropriato prima di codificarlo, spero che funzioni, profilalo e faccia delle riparazioni. – Ascalonian
La "pratica specifica" è scrivere codice ben strutturato senza fare un'ottimizzazione prematura, e quindi profilarlo per scoprire cosa deve essere ottimizzato. –