Le code suivant crée un nouveau clip audio, le joue, dort pendant 3 secondes et le ferme quand il a fini de jouer. Malgré l'appel de close(), je regarde l'utilisation de la mémoire du jvm augmenter de la taille du clip sonore à chaque fois que la boucle while est exécutée. Je participe à un jeu codé en Java, et je gère le son. Je ne peux pas avoir la mémoire que j'utilise augmenter chaque fois qu'un son est joué.Clip Java (son/audio) Fuite de mémoire après la fermeture avec close()
Qu'est-ce qui me manque?
import java.io.File;
import javax.sound.sampled.*;
public class ClipLeak{
public static void main(String[] args) throws Exception{
while(true){
File soundFile = new File("./sound.wav");
AudioInputStream sound = AudioSystem.getAudioInputStream(soundFile);
DataLine.Info info = new DataLine.Info(Clip.class, sound.getFormat());
Clip clip = (Clip) AudioSystem.getLine(info);
clip.open(sound);
sound.close();
clip.addLineListener(new LineListener(){
public void update(LineEvent event){
if(event.getType() == LineEvent.Type.STOP){
event.getLine().close();
}
}
});
clip.start();
Thread.sleep(2000);
}
}
}
Pourriez-vous formater le code? – rsp
@rsp: Code formaté :) – Asaph