वर्तमान में जावा में ओपनजीएल के साथ प्रयोग कर रहा है। निम्नलिखित परीक्षण कोड नेटबीन के भीतर कई चक्र चलाने के बाद, मुझे कम स्मृति त्रुटि मिलती है और प्रोग्राम समाप्त हो जाता है। समस्या कुछ सफल चक्रों के माध्यम से आवेदन चलाने के कुछ समय बाद होती है।जब मैं एलडब्ल्यूजेजीएल आधारित जावा ऐप को कई बार चलाता हूं तो NetBeans कम मेमोरी क्यों घोषित करता है?
ऐसा क्यों होता है और इसे कैसे ठीक किया जा सकता है?
कोड:
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();
}
}
डीबगर में प्रोग्राम चलाएं। यह आपको दिखाएगा कि मेमोरी अपवाद के बाहर वास्तव में कौन सी रेखा हो रही है। –
सवाल है: नेटबीन कम स्मृति की स्थिति पर क्यों रोक रहा है? (इसके लिए एक सेटिंग है)। या सवाल यह है कि क्यों एक मेनरी रिसाव है? (यह एक बहुत ही कठिन सवाल है।) –
@ जोश डीएम कार्यक्रम कुछ समय के लिए अच्छी तरह से चलता है। हर बार जब मैं कोड बदलता हूं तो यह देखने के लिए कोड चलाता है कि यह काम कर रहा है या नहीं और हर बार जब मैं विंडो बंद करने के लिए 'esc' दबाता हूं।एक ही प्रक्रिया को दोहराने के बाद कुछ समय मेमोरी अपवाद – varuog