在我的简单java应用程序中,我为不同的事件播放不同的声音。 我正在使用Java剪辑界面,代码非常相似 通常声音会瞬间播放,但几天或几小时后我就会开始播放声音。我有一个play()方法执行以下操作:
public void play(){
System.out.println(new Date()+" rewinding file");
clip.setFramePosition(0); // Must always rewind!
System.out.println(new Date()+" Playing Sound File");
clip.start();
System.out.println(new Date()+" Sound file stopping or stopped? Not sure");
}
当声音播放没有延迟时,我在日志文件中看到以下内容:
Thu Nov 26 17:17:46 SAST 2015 rewinding file
Thu Nov 26 17:17:46 SAST 2015 Playing Sound File //zero delay!!!
但是时不时地,我没有明显的理由得到以下内容:
Sun Nov 29 06:40:29 SAST 2015 rewinding file
Sun Nov 29 06:48:13 SAST 2015 Playing Sound File //8 minute delay!!!
延迟很大且似乎是随机的,声音片段最多只有1秒钟(简单的哔声)。
对此的任何帮助将不胜感激。
编辑04/12/2015
正如@Rafael Osipov建议我在应用程序中附加了一个分析器,它已经运行了大约18个小时。我没有看到任何东西向我跳出来,所以我在发布延迟时发布时间表,希望有人注意到什么?另外,如果还有其他任何我应该观看/分析以尝试解决问题,请告诉我。
编辑07/12/2015
嘿所有人,我一直在分析这些方法,而不是遥测,我认为它可能会显示更明显的东西,请看下面的图像,并注意 com.sun.media.sound。 directaudiodevice.nwrite 自我时间(CPU)和总时间(CPU)是所有方法中最高的。 既然我的问题与声音有关,你认为这可能是我问题的原因吗?
谢谢!