【问题标题】:Android native Floodfill implementation out of MemoryAndroid 原生 Floodfill 实现内存不足
【发布时间】:2015-11-16 15:20:10
【问题描述】:

我们正在开发一个图像编辑应用程序。对于 Floodfill 算法,我们使用本机代码 (jnibitmap.cpp)。 有时当我们执行算法时,我们会收到 OOM 错误“致命信号 11 (SIGSEGV)”。 正如我们在内存监视器中看到的,我们还没有到达堆边界,但是可用的未分配内存非常小(

【问题讨论】:

  • 我不明白你的问题。
  • “致命信号 11”不是内存不足错误,而是“您刚刚访问了您不应该拥有的内存”错误。检查 logcat 中的本机故障转储以查看失败的位置。

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


【解决方案1】:

我认为 Willi 试图描述的问题如下:

他们正在开发一款 Android 绘画应用程序,例如微软的 Paint。对于填充工具,他们使用了一种称为 floodfill 的算法,但在本机代码中实现。

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

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

HTH

【讨论】:

    猜你喜欢
    • 2014-05-12
    • 2020-12-09
    • 1970-01-01
    • 1970-01-01
    • 2011-08-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多