Java Resourcen Problem (JFrame)

Status
Nicht offen für weitere Antworten.

wwtbunker

Neues Mitglied
Ich wüsste gerne wie ich allgemein erstellte Instanzen (JFrame,Contäner)uws, Freigeben kann um den genutzten arbeitsspeicher komplett wieder freizugeben.

Bei einer
Code:
null
setzung oder
Code:
dispose()
erfolgt keine freigabe des Speichers.
Auch nicht nach einem aufruf des GBs.

Anders gesagt was an Instanzen einmal erstellt ist bleibt im speicher bis zum spiel ende.

Habt ja recht ich benutzte nur ein JFrame...... : :bloed:

Hir mal drei Screenshots vom programm EarthDefender.

Die Gegnerschiffe sind noch nicht fertig deswegen hab ich erstmal ein paar aus Quake4 genommen (GEV-usw) 8)
Quake4 Stuff wird in der endversion nicht mehr vorhanden sein.
Werde mir eigene Actoren modelieren.

bild1.jpg


bild2.jpg


bild3.jpg
 

Wildcard

Top Contributor
Wo hast du denn vor dein Spiel anzuzeigen wenn du keinen Frame mehr hast?
Weiterhin sagt dieses Snippet herzlich wenig über den Aufbau deines Programms.
Wieso funktioniert es nur mit Klassen die keinen Extends(?) benutzen? wie die ActorKlassen, ConfigValues usw.
Es gibt keine Klassen ohne extends. Wenn du es nicht dranschreibst ist das ein implizites extends Object
 
G

Guest

Gast
wwtbunker hat gesagt.:
SpaceShooter EarthDefender (Mein erstes Java Program)
Hab vorher mit Quake4 Gebastelt. (Monster,Waffen,Maps/SP/MP,Mods)


In dem Spiel werden mehrere frames benutzt, (Voreinstellungen[300/500], HauptSpiel[800/600]).
Ich möchte wissen wie ich mit mehrfachFrames Optimiert arbeiten kann.


Wie kann ich die von (frame) benutzten resourcen (ArbeitsSpeicher)
nach der nutzung des JFrame wieder Freigeben???...
Allso das Fenter Komplett entfernen...

Nach der nutzung des Frames möchte ich es Komplett entfernen.
Mit den unten genannten Befehlen gibt es keine wirkung 8(

Code:
frame.finalize();
frame.dispose();
frame = null;
System.gc();

Ich will nicht das Programm Beenden nur das Fenster (Intro,Mainmenu,usw) Freigeben.

Ist echt wichtig für mich weil mein spiel nicht mehr als 64MB Arbeitsspeicher benutzten soll.

Bei den Spiel, Actoren wie (gegnerschiffe und asteroiden) Klassen ohne SuperKlasse funzt es wunderbar und man sieht während des Spiel den genutzten speicher grösser und kleiner werden.

Darf ich (frame) nicht KlassenGlobal Deklarieren, Die Actoren sind bestandteile eines Arrays der wenn es nötig ist den actor Freigibt,
zum beispiel wenn er den bildschierm verlassen hat, oder abgeschossen wurde.

Ich habe mehrere Variablen (Instanzen) bei den das Problem Nervt wie (Das Intro, das Mainmenu, die VorConfiguration, usw).

Bitte Helf mir jemand mit nen Syntax Beispiel Danke
 

Wildcard

Top Contributor
Solange du nicht in der Lage bist, die zur Beantwortung deiner Frage notwendigen Informationen bereitzustellen, ist dir nicht zu helfen.
 

Evil-Devil

Top Contributor
Ich frage mich gerade wieso er mehr als eine JFrame Instanz erstellen will?

Das Beispiel mit Quake 4 hinkt mehr als gewaltig, da dort keinerlei zusätzliche Fensterinstanzen instanziert werden sondern der GUI Renderer lediglich neue Overlays zeichnet wie es halt üblich ist.
 

Wildcard

Top Contributor
Auch, der Eingangspost hat sich verändert?
Ja, das wirft tatsächlich die Frage auf warum du mehrere JFrames instanzierst.
 

dergrüne

Aktives Mitglied
Mich würde die vom Threat-Ersteller gestellte Frage auch interessieren.

Kämpfe gerade auch damit, das wenn ich ein JFrame dispose() Es im Hintergrund noch vorgehalten wird.

Folgendes kleines Programm:

import java.awt.BorderLayout;

import javax.media.j3d.Background;
import javax.media.j3d.BoundingSphere;
import javax.media.j3d.BranchGroup;
import javax.media.j3d.Canvas3D;
import javax.swing.JFrame;
import javax.vecmath.Point3d;

import com.sun.j3d.utils.image.TextureLoader;
import com.sun.j3d.utils.universe.SimpleUniverse;


public class JFrameTest extends JFrame{

private static final long serialVersionUID = 1L;
private Canvas3D c3d;
public JFrameTest(){
super("test");
setSize(1280,1024);
getContentPane().setLayout(new BorderLayout());
// Jetzt kommt der 3D-Teil
c3d = new Canvas3D (SimpleUniverse.getPreferredConfiguration()); //So am besten
SimpleUniverse simpleU = new SimpleUniverse (c3d); //Das VirtualUniverse, hier wird auch schon der View hinzugefügt
simpleU.getViewingPlatform().setNominalViewingTransform(); //Versetzt die Kamera so, dass man gleich etwas sehen kann
BranchGroup scene = new BranchGroup();
simpleU.addBranchGraph (scene);
add(BorderLayout.CENTER,c3d);
setVisible(true);

simpleU.addBranchGraph(createSceneGraph());
}

public BranchGroup createSceneGraph() {
BranchGroup objRoot = new BranchGroup();
BoundingSphere bigBound = new BoundingSphere(new Point3d(),100);
objRoot.setCapability(BranchGroup.ALLOW_CHILDREN_READ);
objRoot.setCapability(BranchGroup.ALLOW_CHILDREN_WRITE);
objRoot.setCapability(BranchGroup.ALLOW_CHILDREN_EXTEND);
//Hintergrund
TextureLoader backgroundTexture = new TextureLoader(".\\grafic\\stars.jpg", this);
Background background = new Background(backgroundTexture.getScaledImage(1280, 1024));
background.setApplicationBounds(bigBound);
objRoot.addChild(background);

return objRoot;
}
}


Und hier die Main

Code:
public class Main {

	public static void main(String[] args) {
		JFrameTest tmp = new JFrameTest();
		
		try {
			Thread.sleep(10000);
		} catch (InterruptedException e) {
			e.printStackTrace();
		}
		
		tmp.dispose();
		
	}

}

Komischerweise schließt auch das Programm nach dem dispose() nicht. Es bleibt einfach offen und frisst immernoch knapp 40MB speicher. Wenn ich das JFrame mit dem Hintergrundbild (111kb groß) erzeuge. Frisst das Programm schon 42-44MB, mache ich nun einen dispose drauf wird es lediglich um knapp 5MB kleiner. Da kann doch nicht sein.

Was noch lustiger ist modifiziere ich die Main folgendermaßen
Code:
public class Main {

	public static void main(String[] args) {
		JFrameTest tmp = new JFrameTest();
		
		try {
			Thread.sleep(1000);
		} catch (InterruptedException e) {
			e.printStackTrace();
		}
		
		tmp.dispose();
		try {
			Thread.sleep(1000);
		} catch (InterruptedException e) {
			e.printStackTrace();
		}
		tmp = new JFrameTest();
		try {
			Thread.sleep(1000);
		} catch (InterruptedException e) {
			e.printStackTrace();
		}
		
		tmp.dispose();
		try {
			Thread.sleep(1000);
		} catch (InterruptedException e) {
			e.printStackTrace();
		}
		tmp = new JFrameTest();
		try {
			Thread.sleep(1000);
		} catch (InterruptedException e) {
			e.printStackTrace();
		}
		
		tmp.dispose();
		try {
			Thread.sleep(1000);
		} catch (InterruptedException e) {
			e.printStackTrace();
		}
		tmp = new JFrameTest();
		try {
			Thread.sleep(1000);
		} catch (InterruptedException e) {
			e.printStackTrace();
		}
		
		tmp.dispose();
	}

}

Wächst das Programm stetig weiter, nachdem alle Frames auf und wieder disposed wurden, hat das Programm gut 50MB gefressen, und das obwohl nix mehr zu sehenn ist.

Kann man ein JFrame irgendwie anders schließen, so das alle referenzen und ressourcen darin freigegebenn werden.

Das ganze interessiert mich in einem anderen Kontext, weil ich bei einer recht großen Java3D Anwendung ein Frame habe was direkt mal 110MB frisst. Nach dem Dispose frisst es aber immernoch 98MB und wenn ich es dann wieder aufrufe kommen locker wieder 40-50MB dabei. Auch alle Interpolatoren darin drehen sich lustig weiter.

Irgendwie macht für mein Verständnis dispose() nicht viel mehr als visible(false).

Kann mir da jemand Licht in die Dunkelheit bringen?

Mfg
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
xFearofdarkness Feinde überlappen sich in Java Spiel Spiele- und Multimedia-Programmierung 3
A Minecraft Java Buch fehlermeldung Spiele- und Multimedia-Programmierung 61
yakazuqi Minecraft java.lang.Error: Watchdog Spiele- und Multimedia-Programmierung 3
L Fehler bei "Nochmal Spielen" (Java) Spiele- und Multimedia-Programmierung 1
N Minecraft Java Error Spiele- und Multimedia-Programmierung 6
M "Java Datei" Cannot be resolved to a variable Spiele- und Multimedia-Programmierung 2
1Spinne Minecraft Fabric Modding Java Error Spiele- und Multimedia-Programmierung 2
Joris Minecraft Minecraft Java Server Spiele- und Multimedia-Programmierung 6
Shanic Minecraft Minecraft Forge Server "Falsche Java Version" Spiele- und Multimedia-Programmierung 6
O Browser-basiertes online Pokerspiel mit Java Spiele- und Multimedia-Programmierung 1
M Spiel Mühle-Programmierung Java Spiele- und Multimedia-Programmierung 9
G VST-Plugins in Java verwenden Spiele- und Multimedia-Programmierung 0
P Audio Visualizer mit OpenGL in Java? Spiele- und Multimedia-Programmierung 4
P Snake Java Hilfe Spiele- und Multimedia-Programmierung 4
D Minecraft [Minecraft] Java Start Fehler (Core-Dump) Spiele- und Multimedia-Programmierung 1
T Welche packages aus der java api doku ist hilfreich zur Android Spieleprogrammierung Spiele- und Multimedia-Programmierung 2
A Programmieren eines Memorys mit Java (in Eclipse) Spiele- und Multimedia-Programmierung 5
L Sound in Java Spiel Spiele- und Multimedia-Programmierung 5
C Java findet FluidSynth nicht Spiele- und Multimedia-Programmierung 2
I Java Andere Fenster in Borderless-Mode setzen Spiele- und Multimedia-Programmierung 16
leon_krys Java-Bußgeldrechner Spiele- und Multimedia-Programmierung 5
G [Java/KryoNet/LibGDX] Mutliplayer Packet Frage Spiele- und Multimedia-Programmierung 2
P Website mit Java Backend? Spiele- und Multimedia-Programmierung 1
D Java Bild bewegen funktioniert nicht Spiele- und Multimedia-Programmierung 8
J Fertigungstechnik.. PLS HALP.. Quellcode vom Text in java-Klasse speichern Spiele- und Multimedia-Programmierung 2
E Kalah Java Implementation Spiele- und Multimedia-Programmierung 1
G [Java] Vereinfachung von Boolean Abfragen Spiele- und Multimedia-Programmierung 3
G [LibGDX/Java] ArrayList Object Speicher Spiele- und Multimedia-Programmierung 3
T Java 3D Spiele- und Multimedia-Programmierung 2
A Spielfelder erstellen mit Jogl Java durch ein Koordinaten Array Spiele- und Multimedia-Programmierung 1
J Java Buttons Spiele- und Multimedia-Programmierung 6
T Java Kalender Spiele- und Multimedia-Programmierung 5
Ice4P4rty Java Optische Oberfläche Spiele- und Multimedia-Programmierung 2
MABY Eine mp3 Datei in Java abspielen Spiele- und Multimedia-Programmierung 14
D Java Bomberman Probleme java.lang.NullPointerException Spiele- und Multimedia-Programmierung 1
N Spiele-Menü in Java Spiele- und Multimedia-Programmierung 9
J HDMI Ausgänge mit Java programmieren? Spiele- und Multimedia-Programmierung 18
H Yu-Gi-Oh! Mit Java was tun? Spiele- und Multimedia-Programmierung 6
G Component System Java 2D Game LibGDX Spiele- und Multimedia-Programmierung 6
S Pong java.lang.StackOverflowError Spiele- und Multimedia-Programmierung 3
C Java aus Klasse rausgehen Spiele- und Multimedia-Programmierung 2
MaxG. Java Internet Radio Spiele- und Multimedia-Programmierung 6
G [Java Server] Allgemeine Frage zum Thema Networking in Videospielen Spiele- und Multimedia-Programmierung 15
P java.lang.NoClassDefFoundError: in Greenfoot Spiele- und Multimedia-Programmierung 0
G Java Achsen invertieren Spiele- und Multimedia-Programmierung 2
G Java 2D Spiel mit LWJGL verbinden Spiele- und Multimedia-Programmierung 1
$ Einstieg in Java Game Development Spiele- und Multimedia-Programmierung 11
BraunBerry Java Game Pixel "einfärben" Spiele- und Multimedia-Programmierung 6
BraunBerry Java Game verbesserte Kollisionserkennung Spiele- und Multimedia-Programmierung 18
BraunBerry Java Game Waypoint System Spiele- und Multimedia-Programmierung 3
S Hilfe bei Java Gui Spiele- und Multimedia-Programmierung 2
D Java sound pulseaudio Spiele- und Multimedia-Programmierung 0
David Schwarzbeck Java 3 dimensionale Kollisions Abfrage Spiele- und Multimedia-Programmierung 2
M Gesellschaftsspiel Mühle in Java programmieren Spiele- und Multimedia-Programmierung 3
beatles Java Minesweeper - OS X und Win7 Unterschied Spiele- und Multimedia-Programmierung 2
D Minecraft Java JDK installiert - Minecraft läuft nichtmehr in 64 Bit Spiele- und Multimedia-Programmierung 2
E TMX - Dateien in Java laden Spiele- und Multimedia-Programmierung 1
K Erstellen eines Fotoalbums mit Java Spiele- und Multimedia-Programmierung 8
windl MoviePlayer in Java Spiele- und Multimedia-Programmierung 0
S 2D-Render Probleme LWJGL 2 (Java) Spiele- und Multimedia-Programmierung 1
F Klausurersatz: Ein Java-Programm erstellen und dieses präsentieren. Spiele- und Multimedia-Programmierung 2
E Java Jump and Run Map zu groß Spiele- und Multimedia-Programmierung 14
P java lwjgl Game Spiele- und Multimedia-Programmierung 0
J programm mit java-plugin Spiele- und Multimedia-Programmierung 2
D Java Webgame, welche Frameworks oder Techs sind von Nöten? Spiele- und Multimedia-Programmierung 5
P Java 2D Bug? Spiele- und Multimedia-Programmierung 8
T Problem mit Eclipse (java)-(minecraft) Spiele- und Multimedia-Programmierung 3
R Java App sendet Midi Daten über Flash Spiele- und Multimedia-Programmierung 3
O Java Zeile aus Textdatei zufällig ausgeben Spiele- und Multimedia-Programmierung 8
K Bestes Bildformat für Spielegrafiken und deren Einbindung in Java Spiele- und Multimedia-Programmierung 2
D JAVA Basiertes Spiel aus dem Internet in eigenem Client laden Spiele- und Multimedia-Programmierung 1
T Alle Referenzen zu einer Klasse aus Java Bytecode ersetzt, JVM sucht trotzdem diese Klasse Spiele- und Multimedia-Programmierung 1
J Java Kollisionsabfrage Spiele- und Multimedia-Programmierung 21
Flo. android java tastatureingaben abfangen. Spiele- und Multimedia-Programmierung 1
J Java Steuerberechnung hilfe Spiele- und Multimedia-Programmierung 17
C Export als .jar funktioniert nicht richtig (JAVA 3D) Spiele- und Multimedia-Programmierung 5
P Java Grafiken mit Rechnungen verknüpfen Spiele- und Multimedia-Programmierung 4
U Minecraft Mit Java auf Minecraft Server anmelden Spiele- und Multimedia-Programmierung 11
F Das sag mir einer Java ist plattform unabhänig ! Spiele- und Multimedia-Programmierung 10
C virtueller stereomix (java sound API) Spiele- und Multimedia-Programmierung 0
S Engine2D - Java 2D Engine Spiele- und Multimedia-Programmierung 20
J Java Game performance Probleme Spiele- und Multimedia-Programmierung 7
C Java Kollisionserkennung Spiele- und Multimedia-Programmierung 4
U Blender in Java Spiele- und Multimedia-Programmierung 8
J Java Fussballspiel Player-KI in der Bewegungsphase Spiele- und Multimedia-Programmierung 4
K Java 15/Slide/Boss Puzzle Spiele- und Multimedia-Programmierung 2
T Java 3D - Step oder IGES Spiele- und Multimedia-Programmierung 1
H 3D Spiele mit Java - Diskussion Spiele- und Multimedia-Programmierung 35
X Kleines Problem mit Java Reflections und einem eigenen Eventhandler Spiele- und Multimedia-Programmierung 1
M Bilder in Java Spiele- und Multimedia-Programmierung 7
A Minecraft Java Ubuntu Minecraft Server startet nicht - ERROR (SIGSEGV) Spiele- und Multimedia-Programmierung 7
N Minecraft java lernen minecraft Spiele- und Multimedia-Programmierung 20
J 2d Ansicht mit Java 3d Spiele- und Multimedia-Programmierung 13
F Abbyy finereader aus java starten, Ergebnis zurück? Spiele- und Multimedia-Programmierung 2
P Zeichenübungen mit Java Spiele- und Multimedia-Programmierung 4
M Minecraft weitere Java Entwickler für minecraft projekt gesucht Spiele- und Multimedia-Programmierung 0
I Minecraft Java programmierungs fehler "MineCraft" Spiele- und Multimedia-Programmierung 6
J Java 2D Sicht Spiele- und Multimedia-Programmierung 13
H wma Datei abspielen: java.io.IOException: Resetting to invalid mark Spiele- und Multimedia-Programmierung 11
M Würdet ihr sagen Java Applets eignen sich gut Spiele- und Multimedia-Programmierung 5

Ähnliche Java Themen

Neue Themen


Oben