【发布时间】:2012-03-02 16:06:18
【问题描述】:
我目前正在做关于声音处理的项目,在这个项目中,它需要乘以包含声音数据的矩阵,即幅度,我必须处理矩阵,主要执行乘法,但矩阵中的元素数量太多......它接近 600kb .wav 文件中的大约 120000 个元素。
所以当我执行乘法时,它给了我一个例外......
线程“主”java.lang.OutOfMemoryError 中的异常:Java 堆空间
请给我一个解决方案...
【问题讨论】:
-
你能把它分解成更小的矩阵吗?在这样大小的矩阵上运行矩阵数学会导致性能非常差(即使你在内存限制内得到它)
-
您是否需要将整个矩阵保存在内存中?难道你不能只乘以块,从文件中读取并将结果输出到另一个文件吗?
-
密切相关 - *.com/questions/4633859/…
-
如果元素是 long 或 double,它们每个是 8 个字节。 120000 *8 = 960 000 字节 ~= 1 兆字节。那不是很多内存。您可以毫无困难地同时记住其中的几个。还是您的意思是您的矩阵有 120 000 行和 120 000 列?
-
你要乘多少个矩阵?那些 square 矩阵?程序在哪里运行?请告诉我们更多细节。