OK!
Ihr habt's ja nicht anders gewollt
:meld:
Memory geht hauptsächlich beim Wechsel der Menuseiten verloren. (Also Hauptseite mit HighScore nach Editor oder in den Fight Modus)
Dies geschieht auf Knopfdruck und vernichtet dann so 2 Mb!!! Was leckt bitte schön so viel Speicher???
Im Wesentlichen wird von Edit zu Hauptmenu nur das Hauptpanel sichtbar gemacht und das Editpanel unsichtbar.Selbst wenn ich bis auf die setVisible Methoden alles enferne gehen immernoch 2 Mb verloren. Es wird nichts neues erstellt. Den Program-thread habe ich auch gestoppt, immernoch Memory leak!
Eigentlich können doch nur die Hintergrund gifs soviel Speicher auf einmal ziehen, oder???
Die gifs sind auf Panels gemalt, die allerdings nur beim Start erstellt werden. Hier die Klasse des Panels:
public class DoubleBufferPanel extends Panel {
Image offscreen;
int type;
public DoubleBufferPanel(int whichone) { // login und main menu site use the same Panel Class
super();
if (whichone == 1)
type = 1;
if (whichone == 2)
type = 2;
}
/**
* null out the offscreen buffer as part of invalidation
*/
public void invalidate() {
super.invalidate();
offscreen = null;
}
/**
* override update to *not* erase the background before painting
*/
public void update(Graphics g) {
paint(g);
}
/**
* paint children into an offscreen buffer, then blast entire image
* at once.
*/
public void paint(Graphics g) {
if(offscreen == null) {
offscreen = createImage(getSize().width, getSize().height);
}
Graphics og = offscreen.getGraphics();
og.setClip(0,0,getSize().width, getSize().height);
super.paint(og);
if (pic_login != null && pic_main != null)
{
if (type == 1)
og.drawImage (pic_login, 0, 0, this.getWidth (), this.getHeight (), this);
if (type == 2)
og.drawImage (pic_main, 0, 0, this.getWidth (), this.getHeight (), this);
}
g.drawImage(offscreen, 0, 0, null);
og.dispose();
}
}
Ab und zu flush() ich alle images mal. Ist ansonsten irgendwas verkehrt an der Panel Klasse??
Ihr habt's ja nicht anders gewollt
:meld:
Memory geht hauptsächlich beim Wechsel der Menuseiten verloren. (Also Hauptseite mit HighScore nach Editor oder in den Fight Modus)
Dies geschieht auf Knopfdruck und vernichtet dann so 2 Mb!!! Was leckt bitte schön so viel Speicher???
Im Wesentlichen wird von Edit zu Hauptmenu nur das Hauptpanel sichtbar gemacht und das Editpanel unsichtbar.Selbst wenn ich bis auf die setVisible Methoden alles enferne gehen immernoch 2 Mb verloren. Es wird nichts neues erstellt. Den Program-thread habe ich auch gestoppt, immernoch Memory leak!
Eigentlich können doch nur die Hintergrund gifs soviel Speicher auf einmal ziehen, oder???
Die gifs sind auf Panels gemalt, die allerdings nur beim Start erstellt werden. Hier die Klasse des Panels:
public class DoubleBufferPanel extends Panel {
Image offscreen;
int type;
public DoubleBufferPanel(int whichone) { // login und main menu site use the same Panel Class
super();
if (whichone == 1)
type = 1;
if (whichone == 2)
type = 2;
}
/**
* null out the offscreen buffer as part of invalidation
*/
public void invalidate() {
super.invalidate();
offscreen = null;
}
/**
* override update to *not* erase the background before painting
*/
public void update(Graphics g) {
paint(g);
}
/**
* paint children into an offscreen buffer, then blast entire image
* at once.
*/
public void paint(Graphics g) {
if(offscreen == null) {
offscreen = createImage(getSize().width, getSize().height);
}
Graphics og = offscreen.getGraphics();
og.setClip(0,0,getSize().width, getSize().height);
super.paint(og);
if (pic_login != null && pic_main != null)
{
if (type == 1)
og.drawImage (pic_login, 0, 0, this.getWidth (), this.getHeight (), this);
if (type == 2)
og.drawImage (pic_main, 0, 0, this.getWidth (), this.getHeight (), this);
}
g.drawImage(offscreen, 0, 0, null);
og.dispose();
}
}
Ab und zu flush() ich alle images mal. Ist ansonsten irgendwas verkehrt an der Panel Klasse??