Ich übernehme einige Anwendungen von einem früheren Entwickler. Wenn ich die Anwendungen über Eclipse ausführe, sehe ich, dass die Speichernutzung und die Heap-Größe stark zunehmen. Bei weiteren Untersuchungen sehe ich, dass sie ein Objekt sowohl in einer Schleife als auch in anderen Dingen über und über erstellen.Welche Best Practices für die Java-Speicherverwaltung gibt es?
Ich fing an, durch zu gehen und etwas aufräumen. Aber je mehr ich durchging, desto mehr Fragen, die ich hatte, "wird das tatsächlich irgendetwas tun?"
Anstatt beispielsweise eine Variable außerhalb der oben genannten Schleife zu deklarieren und nur ihren Wert in der Schleife zu setzen, haben sie das Objekt in der Schleife erstellt. Was ich meine ist:
for(int i=0; i < arrayOfStuff.size(); i++) {
String something = (String) arrayOfStuff.get(i);
...
}
gegen
String something = null;
for(int i=0; i < arrayOfStuff.size(); i++) {
something = (String) arrayOfStuff.get(i);
}
Bin ich falsch zu sagen, dass die untere Schleife ist besser? Vielleicht liege ich falsch.
Auch, was ist nach der zweiten Schleife oben, setze ich "etwas" zurück auf null? Würde das etwas Speicher löschen?
In beiden Fällen, was sind einige gute Speicherverwaltung Best Practices, die ich folgen konnte, die dazu beitragen, meine Speicherauslastung in meinen Anwendungen niedrig zu halten?
Update:
ich jedermanns Feedback schätzen so weit. Allerdings habe ich nicht wirklich nach den obigen Loops gefragt (obwohl ich durch deinen Ratschlag zurück zur ersten Runde gegangen bin). Ich versuche, einige Best Practices zu bekommen, nach denen ich Ausschau halten kann. Etwas im Sinne von "Wenn Sie mit einer Sammlung fertig sind, löschen Sie sie". Ich muss nur wirklich sicherstellen, dass nicht so viel Speicher von diesen Anwendungen belegt wird.
Re Ihre Bearbeitung: Wie drei Leute bisher gesagt haben, Profil es! –
Ich bin auf der Suche nach bestimmten Praktiken zu verwenden, damit ich nicht jemanden Profil haben muss. Ich würde es lieber von vornherein richtig entwickeln als programmieren, hoffen, dass es funktioniert, es profilieren und Korrekturen vornehmen. – Ascalonian
Die "spezifische Vorgehensweise" besteht darin, einen gut strukturierten Code ohne vorzeitige Optimierung zu schreiben und ihn dann zu profilieren, um herauszufinden, was optimiert werden muss. –