我目前正在做声音处理项目,这需要将包含声音数据的矩阵相乘,即幅度,我必须处理矩阵,主要执行乘法运算,但是矩阵中的元素数量太高了……从600kb .wav文件中它接近120000个元素。
所以当我执行乘法运算时,它给了我一个异常(exception)...
线程“主”中的异常java.lang.OutOfMemoryError:Java堆空间
请给我建议解决方案...
最佳答案
听起来您做错了什么。使用比原始数据文件更多的内存是很常见的,但是很少需要超过10倍(仅想到压缩的想象)
我建议您使用VisualVM来查看为什么要使用这么多的内存。您可以通过查看触发错误的方法来发现问题(即查看堆栈跟踪)
假设您要使用120,000 float
作为幅度,即480 KB,可以在大多数手机上使用。顺便说一句:您正在通过电话这样做吗?
关于java - Java中大型二维矩阵的矩阵乘法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9536490/