Java 清除剪辑/音频流中的数据以释放内存
我有一些代码可以作为超级基本音乐播放器:Java 清除剪辑/音频流中的数据以释放内存,java,out-of-memory,clip,Java,Out Of Memory,Clip,我有一些代码可以作为超级基本音乐播放器: import java.io.File; import javax.sound.sampled.AudioInputStream; import javax.sound.sampled.AudioSystem; import javax.sound.sampled.Clip; public class MusicPlayer{ private Clip c; private boolean playing; public MusicPlayer()
import java.io.File;
import javax.sound.sampled.AudioInputStream;
import javax.sound.sampled.AudioSystem;
import javax.sound.sampled.Clip;
public class MusicPlayer{
private Clip c;
private boolean playing;
public MusicPlayer(){
playing = false;
}
public void play(String fileName) {
if(playing == false){
try {
c.drain();
c.flush();
AudioInputStream audioInputStream = AudioSystem.getAudioInputStream(new File(fileName));
c = AudioSystem.getClip();
c.open(audioInputStream);
c.start();
playing = true;
} catch(Exception ex) {
System.out.println("Error with playing sound:" + ex);
ex.printStackTrace();
}
}
}
public void stop(){
if(playing == true){
c.stop();
playing = false;
}
}
}
问题是,如果我试图打开太多wav文件,程序就会崩溃,并出现OutOfMemory错误。给程序更多的内存(开始时不够理想)仍然意味着每次打开一个新文件时,程序的运行速度都会变慢。你可以看到,我试图用以下方法解决这个问题:
c.drain();
c.flush();
但显然这还不够。感谢您的帮助