以下代码创建一个新的音频剪辑,播放它,休眠3秒钟,然后在播放完毕后关闭它。尽管调用close(),但我每次运行while循环时都会观察jvm的内存使用情况,以及声音片段的大小。关闭闭合后的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 2009-11-29 21:29:38
@rsp:代码格式:) – Asaph 2009-11-29 21:31:44