Wenn du häufiger einen bestimmten Hilfsvektor brauchst und das ganze nicht threadsafe sein muss, könntest du ne statische Variable draus machen... Aber an sich würde ich da auf den Compiler vertrauen. Um dem Compiler möglichst viel entgegen zu kommen ist afaik vor allem wichtig Methoden wenn möglich private, final oder static zu deklarieren.
Mit
http://www.cs.ioc.ee/~ando/jbe/ kannst du dir ja mal den bytecode anschauen. Ansonsten wurde von dem Bullet Portierer eine JStackAlloc-Bibliothek erstellt (sollte auch noch etwas offiziellere Varianten geben). Die benutzt Object Pools um die Garbage Collection Zeiten bei einem extrem hohen Aufkommen an neuen Objekten zu verringern. Siehe
http://www.javagaming.org/index.php/topic,18843.0.html Ob das wirklich langfristig sinnvoll ist, wage ich zu bezweifeln.
Ich würde mir bei Java erst Gedanken um Optimierung machen, wenn tatsächlich Probleme auftreten sollten. Mit einem Profiler kann man dann schnell erkennen, wo die wirklichen bottlenecks liegen.