Lokale Objektrefernzen auf null zu setzen ist unnötig, da sie nach dem Ende der Methode eh nicht mehr existieren.
Bei Instanzvariablen könnte es durchaus mal Sinn machen um den Spreicher ans System zurückzugeben, für die Zeit wo die Variablen nicht gebraucht werden. Ist aber auch eher unüblich.
Den GC anzufordern macht auch nicht viel Sinn, da er nach meiner Erfahrung von allein schon sehr zuverläßig läuft und vorher müßte man die Variablen ja auch auf null setzen, damit er was findet zum wegräumen.
Die Perfomance war bei der Einwicklung mit J2ME irgendwie auch immer meine kleinste Sorge.
Solange es noch Referenzen auf das Graphics-Objekt gibt, wird der Garbage Collector es auch nicht entfernen. Wenn du also den Garbage Collector manuell startest, musst du darauf achten die Variable (Referenz) buffer auf null zu setzen.
Der GarbageCollector läuft automatisch, aber erst nach verlassen einer Routine. Wenn Du also 'zwischendrin' Speicher freimachen willst, dann musst Du ihm selber anstossen.
Wobei wirklich nur dann aufgeräumt wird, wenn nicht noch irgendwo auf die Objekte verwiesen wird. Im Beispiel: bufferImage.getGrahics(); Wer weiss was in bufferImage noch alles gemacht/zwischengespeichert wird.
Am besten die GC in Ruhe arbeiten lassen. Die Zeiten der manuellen Objekt-Finalisierung sollten vorbei sein. Sollte man den Drang verspüren, dem GC unter die Arme greifen zu müssen --> Klassendesign prüfen. Aus meiner Sicht gibt es KEINEN Grund solche "Tricks" anzuwenden. Aber ich schaue mir gerne konkrete Anwendungsfälle an.
Sollte man innerhalb der Methode zwischendurch den GC bemühen wollen, ist zu prüfen, ob die Methode nicht einfach zu lang ist.
Ich würde buffer = null weglassen. Wenn ich mein Sprachgefühl konsultierte, käme mir dies wie eine Alibi-Anweisung vor.