Hallo,
ich schreibe gerade an einem RayTracer und habe ein kleines Problem mittels Profiler entdeckt. Es handelt sich ein Codesegment, in dem mehrere Threads gleichzeitig viele Objekte erzeugen und gleich wieder verwerfen.
Das erzeugen und verwerfen muss leider sein und kann daher nicht vermindert werden.
Nun denke ich daran, jeden Thread einen "MemoryPool" zu geben. In diesem soll der Thread alle temporäre Objekte erzeugen. Da sich der benötigte Speicherplatz berechnen lässt, gefiel mir der Ansatz gleich auf Anhieb. Nach jedem Druchlauf müsste ein reset des Pools her.
So, leider kenne ich mich in Java nicht so gut aus. Daher weiß ich nicht, ob man die Library für solche Zwecke etwas zur verfügung stellt :-(
Falls nicht, gibt es über JNI eine Möglichkeit? Evtl. mit C oder C++ einen externen Pool erstellen und verwalten?
Danke für eure Anworten,
Thomas
ich schreibe gerade an einem RayTracer und habe ein kleines Problem mittels Profiler entdeckt. Es handelt sich ein Codesegment, in dem mehrere Threads gleichzeitig viele Objekte erzeugen und gleich wieder verwerfen.
Das erzeugen und verwerfen muss leider sein und kann daher nicht vermindert werden.
Nun denke ich daran, jeden Thread einen "MemoryPool" zu geben. In diesem soll der Thread alle temporäre Objekte erzeugen. Da sich der benötigte Speicherplatz berechnen lässt, gefiel mir der Ansatz gleich auf Anhieb. Nach jedem Druchlauf müsste ein reset des Pools her.
So, leider kenne ich mich in Java nicht so gut aus. Daher weiß ich nicht, ob man die Library für solche Zwecke etwas zur verfügung stellt :-(
Falls nicht, gibt es über JNI eine Möglichkeit? Evtl. mit C oder C++ einen externen Pool erstellen und verwalten?
Danke für eure Anworten,
Thomas