Attualmente sto sperimentando OpenGL in Java. Dopo aver eseguito il seguente codice di test diversi cicli in NetBeans, ricevo un errore di memoria insufficiente e il programma termina. Il problema si verifica un po 'di tempo dopo aver eseguito l'applicazione attraverso alcuni cicli riusciti.Perché NetBeans dichiara bassa memoria quando eseguo un'applicazione Java basata su LWJGL più volte?
Perché ciò accade e come può essere risolto?
Codice:
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();
}
}
Eseguire il programma nel debugger. Dovrebbe mostrare esattamente quale linea si sta verificando l'eccezione di memoria insufficiente. –
è la domanda: perché i netbeans si fermano nella condizione di memoria insufficiente? (c'è un'impostazione per quello). O è la domanda: perché c'è una perdita di cose? (Questa è una domanda molto più complicata.) –
@JoshDM Il programma viene eseguito per alcune volte bene. Ogni volta che cambio il codice eseguo il codice per vedere se funziona o meno e ogni volta che premo 'esc' per chiudere la finestra.Dopo aver ripetuto la stessa procedura, si verifica un'eccezione della memoria temporale – varuog