Android原生Floodfill实现内存不足

时间:2015-11-16 15:20:10

标签: android android-ndk java-native-interface native-code

我们正在开发一个图片编辑应用。对于Floodfill算法,我们使用本机代码(jnibitmap.cpp)。 有时当我们执行算法时,我们得到OOM错误&#34;致命信号11(SIGSEGV)&#34;。 正如我们在内存监视器中看到的那样,我们还没有到达堆边界,但可用的未分配内存非常小(<1 MB)。当它超过2 MB时,它始终有效。 我们认为问题是本机代码,因此android内存管理无法对增加的内存使用做出反应。

1 个答案:

答案 0 :(得分:0)

我认为Willi试图改变的问题如下:

他们正在开发像Paint for Microsoft这样的Android绘画应用程序。对于填充工具,他们使用称为floodfill的algortihm,但是在本机代码中实现。

问题似乎是一些内存问题,因为通过java代码调用本机实现会使应用程序崩溃。他们监视堆并发现,如果空闲堆内存小于1 MB,它就会崩溃。

所以他想问的是如何防止本机代码耗尽内存。我所知道的是java运行时没有关于本机代码的内存需求的信息,并且如果应用程序本身具有较低的可用内存并且不为本机代码分配更多内容,则它听起来像只有崩溃才会崩溃。

HTH