Java 为什么需要关闭音频剪辑?
我见过一个类似于这个的问题,但我想我会更具体一点 因此,上面的代码是我放在一个单独类中的一个方法,当用户单击按钮时将被调用。没有.close()似乎可以正常工作,但我仍然非常确定,即使我正在播放的文件非常小,也应该有一些非常好的理由来使用close() 播放的声音只是一个.wav文件,它是一个非常短的嘟嘟声,大小非常小。 此外,如果上面的代码中有一些您可以指出的缺陷,请这样做Java 为什么需要关闭音频剪辑?,java,Java,我见过一个类似于这个的问题,但我想我会更具体一点 因此,上面的代码是我放在一个单独类中的一个方法,当用户单击按钮时将被调用。没有.close()似乎可以正常工作,但我仍然非常确定,即使我正在播放的文件非常小,也应该有一些非常好的理由来使用close() 播放的声音只是一个.wav文件,它是一个非常短的嘟嘟声,大小非常小。 此外,如果上面的代码中有一些您可以指出的缺陷,请这样做 如果这是一个完全重复的问题,我会道歉,我希望你能提供它的链接。你需要关闭剪辑以释放它使用的任何资源。如果不这样做,您将泄
如果这是一个完全重复的问题,我会道歉,我希望你能提供它的链接。你需要关闭剪辑以释放它使用的任何资源。如果不这样做,您将泄漏内存并最终导致OutOfMemoryException崩溃。:
是的,这是一个副本,请参见此处: 主要是:您可能会耗尽资源,如文件指针、内存等 在研究过程中,我发现Java 7引入了一些语法糖,使之“更容易”:
如果不再需要文件句柄,这是关闭文件句柄的正确方法。文件句柄可能重复
public void playClick(String file)
{
try {
Clip clip = AudioSystem.getClip ();
AudioInputStream ais = AudioSystem.getAudioInputStream (new File(file));
clip.open (ais);
clip.start ();
}
catch (Exception e)
{
System.out.println(e);
}
}
Closes the line, indicating that any system resources in use
by the line can be released. If this operation succeeds,
the line is marked closed and a CLOSE event is dispatched
to the line's listeners.