我目前正在进行声音处理项目,因此需要将矩阵乘以包含声音数据的矩阵,即。幅度,我必须处理矩阵,主要执行乘法,但矩阵中的元素数量太高...它接近600kb .wav文件中的大约120000个元素。
所以当我执行乘法时,它给了我一个例外......
线程“main”中的异常java.lang.OutOfMemoryError:Java堆空间
请建议我一个解决方案......
答案 0 :(得分:0)
听起来你做错了什么。使用比原始数据文件更多的内存是很常见的,但它很少需要超过10倍(只有压缩的想象才会浮现在脑海中)
我建议您使用VisualVM来查看为什么要使用这么多内存。您可以通过查看触发错误的方法(即查看堆栈跟踪)来找到问题
假设您使用120,000 float
作为振幅,即480 KB,可以修复大多数手机。顺便说一句:你是用手机做的吗?
答案 1 :(得分:0)
有两种可能性:
A*B
的非常大小不同于{{ 1}}。异常的位置应该为您在代码中查找错误的位置提供强有力的线索。