DarthShader
Erfahrenes Mitglied
Hallo,
ich habe eine Frage über die der Performance einer Anwendung bezüglich des Garbage Collectors.
Mein Programm ruft eine bestimmte Methode sehr oft auf - diese Methode erwartet als Parameter 3D-Koordinaten. Ich habe mir dazu eine Vektor-Klasse erstellt, was ja nahe liegt, um x, y und z Koordinaten zu kapseln.
Übergebe ich der Methode nun neue Koordinaten (was eben sehr häufig passiert) so mache ich:
Es passiert also, dass ständig neue Objekte vom Typ "MeineVektorKlasse" angelegt werden, nur weil ich Koordinaten übergeben will. Vom Objektorientierten Aspekt aus durchaus sinnvoll - aber von der Performance? Ich meine, es werden hunderte, wenn nicht tausende dieser Objekte erstellt, irgendwann wird doch der Garbage Collector mal sagen, weg mit den überflüüsigen Objekten, die eh nicht mehr referenziert werden...
Wäre es also korrekt zu sagen, dass es von der Perfomance her besser wäre, mit primitiven Typen zu arbeiten, sprich
zu benutzen? Oder macht die Aussage keinen Sinn, weil Java vielleicht die primitiven Typen ebenfalls intern in Klassen wrappt, und sowieso Objekte erstellt werden etc..?
Ich kenne die internen Arbeitsweisen von Java leider zu schlecht, um über dieses Thema irgendwas auszusagen und würde mich freuen, wenn ihr mir ein paar Tipps geben könntet.
Vielen Dank!
ich habe eine Frage über die der Performance einer Anwendung bezüglich des Garbage Collectors.
Mein Programm ruft eine bestimmte Methode sehr oft auf - diese Methode erwartet als Parameter 3D-Koordinaten. Ich habe mir dazu eine Vektor-Klasse erstellt, was ja nahe liegt, um x, y und z Koordinaten zu kapseln.
Übergebe ich der Methode nun neue Koordinaten (was eben sehr häufig passiert) so mache ich:
Code:
meineMethode(new MeineVektorKlasse(x, y, z));
Es passiert also, dass ständig neue Objekte vom Typ "MeineVektorKlasse" angelegt werden, nur weil ich Koordinaten übergeben will. Vom Objektorientierten Aspekt aus durchaus sinnvoll - aber von der Performance? Ich meine, es werden hunderte, wenn nicht tausende dieser Objekte erstellt, irgendwann wird doch der Garbage Collector mal sagen, weg mit den überflüüsigen Objekten, die eh nicht mehr referenziert werden...
Wäre es also korrekt zu sagen, dass es von der Perfomance her besser wäre, mit primitiven Typen zu arbeiten, sprich
Code:
meineMethode(x, y, z); // x, y und z sind vom typ float
zu benutzen? Oder macht die Aussage keinen Sinn, weil Java vielleicht die primitiven Typen ebenfalls intern in Klassen wrappt, und sowieso Objekte erstellt werden etc..?
Ich kenne die internen Arbeitsweisen von Java leider zu schlecht, um über dieses Thema irgendwas auszusagen und würde mich freuen, wenn ihr mir ein paar Tipps geben könntet.
Vielen Dank!