安卓JNI的内存限制是多少?

3

我听说在Android中,JNI没有应用程序内存限制。那么如何找到JNI在Android中的内存限制呢? 我认为这个限制会相对较大,当然,仍取决于有多少应用程序正在运行以及JNI已经使用了多少内存。

我将在JNI中进行一些图像处理操作,我不想遇到outofmemory异常。我该如何避免它呢?


我很好奇你从哪里听到的。 - Glenn
1
内存限制可能是“尽可能少”。 - Alex Lockwood
@Glenn: "如何解决Android的24MB内存限制":http://blog.javia.org/how-to-work-around-androids-24-mb-memory-limit/ - user1914692
1个回答

1

我认为你不需要了解JNI中的内存限制。尝试分配所需的内存,如果返回null,则表示没有可用的内存。如果你想要进行图像处理,首先必须解码图像。限制位图大小(宽度、高度),否则你将耗尽内存。最好缓存图像数据以供重复使用。不要在内存中保留大量的位图。回收无用的位图以增加可用内存。小心控制你的内存,这样你就不会遇到内存不足的异常。


谢谢。我认为给我设计图像处理算法一个大致的估计会很好。 - user1914692
你可以预先分配一个大内存,就像一个内存池一样。然后使用内存池来管理你的位图。如果你能估计出总内存的大小,就不会有关于内存限制的问题了。 - yushulx
谢谢。我曾经考虑过这样的方法:先分配一块大内存;如果失败了,再分配稍小一点的内存;如果还是失败,……最终找到可用的内存量。基于此,我将设计我的图像处理算法。这就是你所指的吗? - user1914692
不,我只是随便问问看有没有更好的做法。:) 稍后会试一下。 - user1914692

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接