I have written some graphing routines to display information from some geophysical modeling. This generates a LOT of output, so there are a lot of objects generated. I am rendering them through a PostScript-like class I wrote. That all works great, now that I manage all the path elements myself. Initially I had big problems with garbage collection, but now I manage the pool myself. I can handle 12 sets of one hundred observations with full PostScript extruded rendering at almost 60 FPS.
The one remaining area of memory thrashing is the tessellation. As part of the tessellation, one has to allocate a double[3] object, that gets passed to the tessellator’s callback routines. That’s all fine, but there are a lot of vertices being generated - tens of thousands per second. So here comes the GC again. I am happy to manage these as well - there are never more than a couple of hundred in use at any one time.
I thought that once the glVertex was constructed in the callback the coords that were allocated it would be OK to re-collect into my pool. But that doesn’t seem to be the case. Looks like somebody is holding a reference for some reason. Anybody know about this area? Or can point me to some info? I suspect this memory is involved in some trans-JNI shenanigans.
TIA