我正在编写一个小巧的Android应用程序,它可以填充设备的内存以进行测试。 但我不允许分配超过512MB。 错误日志显示:
Throwing OutOfMemoryError "Failed to allocate a 1000012 byte allocation with 229520 free bytes and 224KB until OOM"
Alloc partial concurrent mark sweep GC freed 6(192B) AllocSpace objects, 0(0B) LOS objects, 0% free, 511MB/512MB
Clamp target GC heap from 527MB to 512MB
我试图在捕获oom异常后分配更多内存 - 但没有成功。
有没有办法分配更多内存?
答案 0 :(得分:2)
不是Java。每个Android应用都有一个堆限制。通常情况下,这比512MB低很多;我假设您已将android:largeHeap="true"
添加到清单中以使其变大。
如果您需要分配更多,则需要使用NDK,因为在本机代码中进行的分配不计入Dalvik / ART堆限制。