Wichtig bei Garbage Kollektoren ist, dass du nicht weisst, wann der losläuft. Ausserdem kannst du die Größe des Heap Sizes einstellen.
java -xms (initial heap space)
java -xmx (maximal heap space).
Dies kann z.B. in Websphere eine wichtige Tuning-Maßnahme sein.
Profiler können dir anzeigen, wieviel Speicher gerade beansprucht wird, wann der Garbage Collector einsetzt, usw.
Es ist nicht unbedingt besser einfach mehr Heap-Speicher zu nehmen, weil dann der Lauf des Garbage Collector sehr lange läuft, wenn er startet. Kurze Zyklen sind oft besser.
Zurück zu deiner Frage: Früher konnte man eindeutig sagen, dass
Object obj=new Object();
for (int i=0;i<10000000;i++)
{
und hier alle Variablen etc von obj zurücksetzen und neu initialisieren.
weitere code....
weniger heap space braucht. Mit den neueren Garbabe Kollektoren ist das nicht mehr so, v.a. weil Objekte, die nur sehr kurz leben auch sehr schnell garbage-collected werden (warum auch immer).
Und ein Programm wird übersichtlicher, wennn Variablen, die tatsächlich nur im Skope der Schleife benötigt werden auch dort initialisiert werden und nicht ausserhalb.
Allgemein wird vor Premature Optimization gewarnt. Es ist in einem gewissen Rahmen immer besser, übersichtlich zu programmieren statt nach oft sowieso nicht alle Aspekte in Betracht ziehenden einfachen Performance-Regeln. Besser ist es, mit Profilern zu arbeiten.
Hier die wirklich große Spezialseite zu Java Performance Tuning:
http://www.javaperformancetuning.com/Axel