android - 如何增加 Android 2.3 (Gingerbread) 上的堆大小?

标签 android out-of-memory heap-memory android-2.3-gingerbread

当我尝试使用 StringBuilder.append() 创建大于 4MB 的 String 时,出现 OutOfMemoryError。

据我所知,StringBuilder 对于大小没有任何限制,String 也没有。

所以我搜索了“如何增加 Android 堆大小”,据我所知 this answerthis answer ,Gingerbread 是唯一无法处理堆大小的版本,因为对于早期版本,您使用 VMRuntime 类,而对于较新版本,您在 list 上使用 android:largeHeap="true"

这个假设正确吗?当您处于 VMRuntime 和 android:largeHeap="true" 之间时,您会做什么?

我使用 Runtime.getRuntime().totalMemory()/1048576 - Runtime.getRuntime().maxMemory()/1048576 在设备上获取“5.00 MB 分配的 42.00 MB 可用空间”正在用于测试(Android 2.3.6)。

最佳答案

Is that assumption correct?

我无法确定 VMRuntime 是否有效。 android:largeHeap 绝对适合 API 级别 11+。

What do you do when you're in between VMRuntime and android:largeHeap="true"?

找到一种更节省内存的方法来构建 4MB String,例如为 StringBuilder 构造函数提供大容量。

或者,找到一种方法来实现您正在执行的任何操作,而无需创建连续的 4MB String

关于android - 如何增加 Android 2.3 (Gingerbread) 上的堆大小?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26802531/

相关文章:

android - Android Studio 如何为 native 代码构建不同的架构?

java - 从手机存储传递选定图像时内存不足

python - gensim-Doc2Vec : MemoryError when training on english Wikipedia

Java 非常大的堆大小

java - 你能估计一下 Java 会增加多少堆吗?

Android:如何在 xml 布局中添加开/关指示器

java - 如何在android studio中声明4d字符串数组?

android - onPostExecute 取消 AsyncTask

javascript - 当没有什么东西应该那么大时,使用nodejs处理内存不足错误

java - 并发模式失败的问题