Следующий код создает новый аудиоклип, воспроизводит его, спит в течение 3 секунд и затем закрывает его, когда он закончен. Несмотря на вызов функции close(), я наблюдаю, как использование jvm в памяти увеличивается по размеру звукового клипа при каждом запуске цикла while.Заставка Java (звук/аудио) Утечка памяти после закрытия с закрытием()
Я участвую в игре, закодированной в java, и обрабатываю звук. Я не могу использовать память, которую я использую каждый раз, когда воспроизводится звук.
Что мне не хватает?
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);
}
}
}
Не могли бы вы отформатировать код? – rsp
@rsp: Отформатированный код :) – Asaph