Speicherproblem?

Status
Nicht offen für weitere Antworten.

LePier

Mitglied
Hi zusammen. Ich weiß, es gab hier schon viele Threads über den Garbage
Collector, aber leider konnten die mir bei deisem Problem auch nicht helfen.

Dies ist der Code:
Ein simples Programm, was ein mp3-File abspielt.


Code:
import java.io.*;
import javax.media.*;

class versuch{
	
	public Player MusicPlayer;
	public File temp;
	
	public versuch(){
	}
	
	public void spielen(){
	
		try {
   			temp = new File("G:/nr5.mp3");
   			MusicPlayer = Manager.createPlayer(temp.toURL ());
   		}
   			
   		catch(Exception murle){
   		}
   		
   		MusicPlayer.start();
	
	}
	
	public static void main(String[] args) {		
		versuch bla = new versuch();
		bla.spielen();
	}
}



Das Problem bie der Sache ist, dass das Programm nicht selbstständig
terminiert. Wieso? Wenn das Soundfile abgespielt wurde, ist die Methode
doch beendet oder? Ich habe es schon mit MusicPlayer.stop() nach einer
gewissen Sleep-Periode probiert, oder indem ich sämtliche Objekte auf null
gesetzt hab und den Garbage Collector gestartet habe. Meine Fragen also:
Wie terminiert das Programm selbsttändig?
Wie könnte ich bei einem Fortlauf des Programms den vom mp3-File besetzten
Speicher wieder freibekommen (wichtigere Frage)? Also wenn ich danach ein
zweites mp3 laufen lassen würde, mit nem Sleep/oder ner
Playerstatus-bedingten Schleife als Verzögerung.

Danke schonmal im Voraus für eure Bemühungen!
 

dotlens

Top Contributor
Programme terminieren sich nie selbstständig.
Das machst du mit System.exit(0);
also musst du auch kein musicPlayer.stop(); einfügen....
(variablen schreibt man klein)

du kannst einfacht die Variable temp ändern. Und dadurch ein anderes File auswählen.
So verliehrst du kein Speicherplatz....
Danach die Methode 'spielen' nochmals aufrufen
 

dotlens

Top Contributor
ouou, stimmt :oops:

hab zulange nichts mehr ohne GUI programmiert...

gibt mal etwas nach aus:
Code:
bla.spielen();
System.out.println("nach spielen");
 
S

stev.glasow

Gast
Ich glaub die start() 'schupst' nur den Player Thread an und geht dann gleich wieder 'raus'.
@LePier schau mal hier http://java.sun.com/products/java-media/jmf/1.0/guide/
Schließen kannst du den Player mit close() anhalten mit stop() bzw. deallocate() (wann man was nimmt weiß ich nicht) und ob die Datei erfolgreich abgespielt wurde kannst du evtl mit nem ControllerListener abfangem, ist nur ne Vermutung weiß es nicht.
 
Status
Nicht offen für weitere Antworten.

Ähnliche Java Themen

Neue Themen


Oben