Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/apache-spark/5.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
使用Clip java时发生OutOfMemoryError_Java_Out Of Memory_Javax.sound.sampled - Fatal编程技术网

使用Clip java时发生OutOfMemoryError

使用Clip java时发生OutOfMemoryError,java,out-of-memory,javax.sound.sampled,Java,Out Of Memory,Javax.sound.sampled,解决:我解决了!!我必须在netbeans ide中增加项目属性的堆大小,而不是在netbeans ide配置本身中 我有一个非常简单的游戏应用程序,我使用javax.sound.sampled软件包中的Clip对象来播放一个长约9m、大小约8mb的背景musican mp3格式文件,我将其转换为wav文件,它变成了87mb>。这背后的原因是您的程序使用的内存太多,超过了您指定的堆大小或默认大小。内存泄漏也可能对此负责。您可以通过取消所有引用来帮助Java垃圾收集器。否则,您可以通过-Xmx25

解决:我解决了!!我必须在netbeans ide中增加项目属性的堆大小,而不是在netbeans ide配置本身中


我有一个非常简单的游戏应用程序,我使用javax.sound.sampled软件包中的Clip对象来播放一个长约9m、大小约8mb的背景musican mp3格式文件,我将其转换为wav文件,它变成了87mb>。这背后的原因是您的程序使用的内存太多,超过了您指定的堆大小或默认大小。内存泄漏也可能对此负责。您可以通过取消所有引用来帮助Java垃圾收集器。否则,您可以通过-Xmx256m设置堆大小,其中m=MB。

请根据您的.wav文件大小检查JVM堆大小。分配给JVM堆的内存可能不足

使用以下命令增加jvm堆:java-Xmx**-可以分配的内存在哪里

此外,在例外情况下:

catch (Exception e) {
           //close `inputStream` 
           // close `clip`
}

您可以使用嵌套类或新的ActionLister,然后覆盖actionPerformed方法,而不是使用所有的if语句(这不是很OO)。请尝试使用DiskFile而不是File。我不确定这种情况,但在其他一些情况下,它会节省大量内存。@PoiXen:谢谢你的建议我下次会在较小的应用程序中尝试,但在我的实际应用程序中,我有一个用于游戏机制的arrayits按钮,所以我在mouseClicked方法中的循环中使用if语句。我尝试过使用此方法的解决方案:但它不起作用我尝试过使用此方法的解决方案:但它不起作用。此外,我必须将这两个对象作为类的公共成员取出,以便能够在catch中关闭它。这对整个过程有什么影响?另外,我添加LineListener的部分是一段我不完全理解的代码,但我知道它解决了导致应用程序崩溃的OutOfMemory错误。与上面的答案相同,我有相同的注释您分配了多少堆大小?这是我应该更改堆大小的行?->netbeans\u default\u options=-J-client-J-Xss2m-J-XX:PermSize=32m-J-Dapple.laf.useScreenMenuBar=true-J-Dapple.awt.graphics.UseQuartz=true-J-Dsun.java2d.noddraw=true-J-Dsun.zip.disableMemoryMapping=true->>我缺少什么,或者我必须以我已经删除更改的方式更改什么此:-J-XX-MaxPermSize=500m
catch (Exception e) {
           //close `inputStream` 
           // close `clip`
}