Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/335.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 清除剪辑/音频流中的数据以释放内存_Java_Out Of Memory_Clip - Fatal编程技术网

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();
但显然这还不够。感谢您的帮助