我正在尝试使用 BufferedInputStream
加载外部 DICOM 文件,但它最终耗尽了内存。当我使用 InputStream
时,这从来没有出现过(我在通过 assets
文件夹加载文件时出现了这个问题)。
我创建了自己的生产者-消费者线程来缓冲文件,所以我实际上不需要 BufferedInputStream,但我确实需要使用 mark()
和 reset()
在 FileInputStream
中不可用。
我应该如何解决这个问题?是否有另一种 InputStream
可以与具有 mark()
/reset()
的 File
一起使用> 功能?我可以在 BufferedInputStream
抛出错误之前以某种方式清空缓冲区吗?或者我应该找到一种方法来代替使用 mark()
吗?
感谢您的输入。
最佳答案
要使 mark
和 reset
与缓冲输入一起工作,mark
和 reset
之间的文件点需要留在内存中。
解决方法取决于您实际尝试做什么;如果您只需要从已知位置开始读取,可能是 RandomAccessFile
。
关于java - BufferedInputStream 在 Android 中引发内存不足错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8185611/