当我尝试使用String
创建大于4MB的StringBuilder.append()
时,我收到OutOfMemoryError。
据我所知,StringBuilder
对尺寸没有任何限制,因此不String
。
所以我搜索了“如何增加Android堆大小”,就我从this answer和this answer得出的结论而言,Gingerbread是唯一一个你无法处理的问题。堆大小,因为对于早期版本,您使用VMRuntime类以及Manifest上的较新版本android:largeHeap="true"
。
这个假设是否正确?当您处于VMRuntime和android:largeHeap="true"
之间时,您会怎么做?
我使用Runtime.getRuntime().totalMemory()/1048576 - Runtime.getRuntime().maxMemory()/1048576
在我用于测试的设备(Android 2.3.6)上获得“5.00 MB分配的42.00 MB可用空间”。
答案 0 :(得分:2)
这个假设是否正确?
我不能说VMRuntime
是否有效。 android:largeHeap
绝对适用于API Level 11 +。
你在VMRuntime和android之间做什么:largeHeap =" true"?
找到一种更节省内存的方法来构建4MB String
,例如为StringBuilder
构造函数提供大容量。
或者,找到一种方法来实现您正在做的任何事情而不创建连续的4MB String
。