当我尝试使用 StringBuilder.append()
创建大于 4MB 的 String
时,出现 OutOfMemoryError。
据我所知,StringBuilder
对于大小没有任何限制,String
也没有。
所以我搜索了“如何增加 Android 堆大小”,据我所知 this answer和 this 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/