java - BufferedInputStream 在 Android 中引发内存不足错误

标签 java android file-io out-of-memory

我正在尝试使用 BufferedInputStream 加载外部 DICOM 文件,但它最终耗尽了内存。当我使用 InputStream 时,这从来没有出现过(我在通过 assets 文件夹加载文件时出现了这个问题)。

我创建了自己的生产者-消费者线程来缓冲文件,所以我实际上不需要 BufferedInputStream,但我确实需要使用 mark()reset()FileInputStream 中不可用。

我应该如何解决这个问题?是否有另一种 InputStream 可以与具有 mark()/reset()File 一起使用> 功能?我可以在 BufferedInputStream 抛出错误之前以某种方式清空缓冲区吗?或者我应该找到一种方法来代替使用 mark() 吗?

感谢您的输入。

最佳答案

要使 markreset 与缓冲输入一起工作,markreset 之间的文件点需要留在内存中。

解决方法取决于您实际尝试做什么;如果您只需要从已知位置开始读取,可能是 RandomAccessFile

关于java - BufferedInputStream 在 Android 中引发内存不足错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8185611/

相关文章:

c# - 使用 C# 从 RLM 读取许可文件(C++ 到 C# 的翻译)

java - EhCache 3 和 Spring Boot

android - 无法使用毕加索缓存图像

java - 在 Libgdx 中加载 Obj 文件不适用于 Android

android - RecyclerView 与 GridLayoutManager 试图解决 wrap_content

android - 如何在 android 中使用谷歌日历 api?

c# - 将 XNA 3.1 转换为 XNA 4.0。 StorageContainer.TileLocation

java - 从ObjectInputStream读取一个对象(自定义)

java - 无法从 Java 进程(Runtime.getRuntime().exec() 或 ProcessBuilder)读取 InputStream

java - Adcolony 与 Android Studio