除了扎根设备并破解Android为正在运行的应用程序分配内存限制的方式外,没有其他方法可以使用本机Java代码来增加内存限制。
但是(!),通过JNI使用C ++库可以使您规避此限制。在此层分配的所有内存都可以访问设备的整体内存池,而不是本机应用程序获得的沙盒池。
作为示例,请看OpenGL。通常,在获得OutOfMemory异常之前,您可能会在内存中保存4-5位大小为1024x1024的位图。但是,如果每次创建位图时,都将其转换为OpenGL纹理(在本机C
++库中进行管理),然后销毁该位图,则会发现在到达设备的位图之前,您可以保存大量图片。内存限制。
同样,如果您创建了这样的C
++库,并通过JNI将其链接到您的项目,则理论上您可以在该库中保留一个巨大的缓冲区,并使用Java代码追加更多数据,或者在需要时提取一部分数据。



