【发布时间】:2013-09-13 13:13:46
【问题描述】:
我有许多存储为.mha 文件的卷,我通常使用名为mha_read_volume 的函数在Matlab 中打开这些文件,您可以在Matlab Central 上找到该函数。我的问题是这个函数随机抛出一个内存不足的错误消息,与使用一些java库解压缩这些图像有关。
罪魁祸首似乎在这里:
function M = zlib_decompress(Z,DataType)
import com.mathworks.mlwidgets.io.InterruptibleStreamCopier
a=java.io.ByteArrayInputStream(Z);
b=java.util.zip.InflaterInputStream(a);
isc = InterruptibleStreamCopier.getInterruptibleStreamCopier;
c = java.io.ByteArrayOutputStream;
isc.copyStream(b,c);
M=typecast(c.toByteArray,DataType);
我怀疑内存泄漏,但我不知道如何处理此代码来解决问题。
这是错误信息:
??? Java exception occurred:
java.lang.OutOfMemoryError: Java heap space
at java.util.Arrays.copyOf(Unknown Source)
at java.io.ByteArrayOutputStream.toByteArray(Unknown Source)
Error in ==> mha_read_volume>zlib_decompress at 87
M=typecast(c.toByteArray,DataType);
Error in ==> mha_read_volume at 74
V = zlib_decompress(Z,DataType);
【问题讨论】:
-
您使用的平台是否没有足够的内存?
-
这个问题真的很随机:有时我启动Matlab,它不会打开任何文件,有时它可以打开50个文件。每次我打开一个卷时,我都会将它分配给同一个变量,因此所需的内存大致保持不变,并且应该远低于我的系统规格。
-
嗯......我不会有太多帮助;祝你好运!
-
我很不幸:1)Matlab 网站正在维护中,所以我必须链接到 Google 缓存,并且 2)我无法重现该问题,这很烦人,因为它通常经常发生.
标签: java matlab image-processing out-of-memory inflate