my poor memory managment
Posted by
keith on
Aug 19, 2016; 6:46pm
URL: https://forum.jogamp.org/my-poor-memory-managment-tp4037072.html
When I open a java3d window (NEWT+Ardor3d) it works perfectly. After I close and reopen it, I get an
out of memory error.
The
out of memory error occurs when I have a lot of models. Smaller amounts of meshes/nodes can be closed and restarted with no problems. I have closed and restarted simpler scenarios 5 or 6 times. It is the large and complex ones where I get this problem.
After I close it, then attempt to reopen it, I get:
com.jogamp.opengl.GLException: Caught RuntimeException: com.ardor3d.util.Ardor3dException: Error in opengl: out of memory on thread main
at com.jogamp.opengl.GLException.newGLException(GLException.java:76)
at jogamp.opengl.GLDrawableHelper.invokeGLImpl(GLDrawableHelper.java:1327)
at jogamp.opengl.GLDrawableHelper.invokeGL(GLDrawableHelper.java:1147)
at com.jogamp.newt.opengl.GLWindow.display(GLWindow.java:759)
at jogamp.opengl.GLDrawableHelper.invoke(GLDrawableHelper.java:912)
at jogamp.opengl.GLAutoDrawableBase.invoke(GLAutoDrawableBase.java:642)
at com.ardor3d.framework.jogl.swt.JoglNewtSwtCanvas.draw(JoglNewtSwtCanvas.java:111)
at com.ardor3d.framework.FrameHandler.updateFrame(FrameHandler.java:90)
at com.neighborhoodinnovations.ThreeD.ardor3d.App3dBase.start(App3dBase.java:474)
at com.neighborhoodinnovations.ui.actions.Action$172.preStep(Action.java:3087)
at com.neighborhoodinnovations.ui.actions.Action.preStep(Action.java:6250)
at com.neighborhoodinnovations.ui.App.invokeDetailMethod(App.java:9101)
at com.neighborhoodinnovations.ui.App.doEntryStep(App.java:8822)
at com.neighborhoodinnovations.ui.actions.ActionHandler.act(Action.java:6405)
at com.neighborhoodinnovations.ui.actions.Action.act(Action.java:6147)
at com.neighborhoodinnovations.ui.App$67.handleEvent(App.java:8053)
at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:84)
at org.eclipse.swt.widgets.Display.sendEvent(Display.java:4410)
at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1079)
at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1103)
at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1088)
at org.eclipse.swt.widgets.Widget.sendKeyEvent(Widget.java:1130)
at org.eclipse.swt.widgets.Widget.sendKeyEvent(Widget.java:1126)
at org.eclipse.swt.widgets.Widget.wmChar(Widget.java:1547)
at org.eclipse.swt.widgets.Control.WM_CHAR(Control.java:4910)
at org.eclipse.swt.widgets.Canvas.WM_CHAR(Canvas.java:364)
at org.eclipse.swt.widgets.Control.windowProc(Control.java:4791)
at org.eclipse.swt.widgets.Canvas.windowProc(Canvas.java:359)
at org.eclipse.swt.widgets.Display.windowProc(Display.java:5102)
at org.eclipse.swt.internal.win32.OS.DispatchMessageW(Native Method)
at org.eclipse.swt.internal.win32.OS.DispatchMessage(OS.java:2552)
at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3814)
at org.eclipse.jface.window.Window.runEventLoop(Window.java:818)
at org.eclipse.jface.window.Window.open(Window.java:794)
at com.neighborhoodinnovations.ui.App.main(App.java:13451)
Caused by: java.lang.RuntimeException: com.ardor3d.util.Ardor3dException: Error in opengl: out of memory
at jogamp.opengl.GLRunnableTask.run(GLRunnableTask.java:67)
at jogamp.opengl.GLDrawableHelper.execGLRunnables(GLDrawableHelper.java:770)
at jogamp.opengl.GLDrawableHelper.display(GLDrawableHelper.java:676)
at jogamp.opengl.GLAutoDrawableBase$2.run(GLAutoDrawableBase.java:443)
at jogamp.opengl.GLDrawableHelper.invokeGLImpl(GLDrawableHelper.java:1293)
... 33 more
Caused by: com.ardor3d.util.Ardor3dException: Error in opengl: out of memory
at com.ardor3d.renderer.jogl.JoglRenderer.checkCardError(JoglRenderer.java:689)
at com.ardor3d.renderer.jogl.JoglRenderer.flushFrame(JoglRenderer.java:237)
at com.ardor3d.framework.jogl.JoglCanvasRenderer.draw(JoglCanvasRenderer.java:265)
at com.ardor3d.framework.jogl.JoglDrawerRunnable.run(JoglDrawerRunnable.java:16)
at jogamp.opengl.GLRunnableTask.run(GLRunnableTask.java:61)
... 37 more
Caused by: com.jogamp.opengl.GLException: out of memory
at com.ardor3d.renderer.jogl.JoglRenderer.checkCardError(JoglRenderer.java:686)
... 41 more
Memory analysis (Eclipse MAT) at this point (from a generated heap dump) shows
314 instances of "com.ardor3d.scenegraph.Node", loaded by "sun.misc.Launcher$AppClassLoader @
0x6c16b16e8" occupy 75,387,696 (52.34%) bytes. These instances are referenced from one instance of
"java.lang.Object[]", loaded by "<system class loader>"
Keywords
java.lang.Object[]
com.ardor3d.scenegraph.Node
sun.misc.Launcher$AppClassLoader @ 0x6c16b16e8
On close of the window, I attempt to node.detatchAllChildren() for all the nodes I draw.
If you can suggest some other diagnostics or something else I can try to clear memory, I welcome your suggestions.