While profiling my allocation, it turned out a noticeable amount of objects were being created in calls to GLContext.makeCurrent() and GLCanvas.swapBuffers(). The objects created were ByteBuffers, LongBuffers, int[], Object[], com.sun.gluegen.runtime.StructAccessor, and com.sun.opengl.impl.JAWT_DrawingSurface64.
Are these allocations absolutely necessary (they seem to be made every frame)?