目前在Java中使用OpenGL进行实验。在NetBeans中运行以下测试代码几个周期后,我收到内存错误并且程序终止。在通过几个成功周期运行应用程序之后,问题就会发生一段时间。为什么NetBeans在我多次运行基于LWJGL的Java应用程序时声明内存不足?
为什么会发生这种情况,它如何解决?
代码:
package test3d;
import org.lwjgl.LWJGLException;
import org.lwjgl.opengl.Display;
import org.lwjgl.opengl.DisplayMode;
import org.lwjgl.opengl.GL11;
import org.lwjgl.input.Keyboard;
class ColoredTriangle {
public void start() {
try {
Display.setFullscreen(true);
DisplayMode dm = new DisplayMode(34,34);
// Display.setDisplayMode(new DisplayMode(DisplayMode.get));
Display.create();
} catch (LWJGLException e) {
e.printStackTrace();
System.exit(0);
}
// Init OpenGL
GL11.glMatrixMode(GL11.GL_PROJECTION);
GL11.glLoadIdentity();
GL11.glOrtho(-3, 3, -2.4, 2.4, -1, 1);
GL11.glRotatef(0.0f,5.0f,1.0f,0.0f);
//GL11.glOrtho(0, 640, 480, 0, 1, -1);
GL11.glMatrixMode(GL11.GL_MODELVIEW);
boolean quit = false;
while (!quit) {
// Clear the screen.
GL11.glClear(GL11.GL_COLOR_BUFFER_BIT | GL11.GL_DEPTH_BUFFER_BIT);
//GL11.glFrontFace(GL11.GL_CCW);
// Begin drawing
GL11.glBegin(GL11.GL_QUADS);
GL11.glColor3f(1.0f,0.0f,0.0f); //Red
/*
GL11.glVertex3f(0.0f,0.0f, 0.0f);
GL11.glVertex3f(0.0f,1.0f, 0.0f);
GL11.glVertex3f(1.0f,1.0f, 0.0f);
GL11.glVertex3f(1.0f,0.0f, 0.0f); //*/
GL11.glVertex3f(1.0f,0.0f, -1f);
GL11.glVertex3f(1.0f,1.0f, -1f);
GL11.glVertex3f(2.0f,1.0f, -1f);
GL11.glVertex3f(2.0f,0.0f, -1f);
GL11.glEnd();
Display.update();
if (Display.isCloseRequested() || Keyboard.isKeyDown(Keyboard.KEY_ESCAPE))
quit = true;
}
Display.destroy();
System.exit(0);
}
}
class Test3d
{
public static void main(String args[]) {
ColoredTriangle ct = new ColoredTriangle();
ct.start();
}
}
在调试器中运行该程序。它应该告诉你到底发生了什么行内存不足异常。 – 2013-02-13 19:40:14
是问题:netbeans为什么在低内存条件下停止? (有一个设置)。或者是问题:为什么会出现泄漏? (这是一个更棘手的问题。) – 2013-02-15 03:48:59
@JoshDM程序运行好几次。每当我更改代码时,我都会运行代码以查看它是否正常工作,并且每次按'esc'关闭窗口。重复同样的操作一段时间后内存异常是发生 – varuog 2013-02-15 08:30:54