Android NDK дает сбой при нехватке памяти (отчеты Crashlytics)

Я вижу некоторые сбои (99,5% + сеансы без сбоев) из моего приложения в панели управления Crashlytics, связанные с NDK. Эти сбои (в основном SIGSEGV SEGV_MAPERR, но иногда и SIGBUS BUS_ADRALN) появляются в случайных местах. Для всех них Crashlytics сообщил о низком состоянии свободной оперативной памяти (2-4%, только в одном отчете о сбоях я видел 15% свободной оперативной памяти). Я использую libc ++ (статическое связывание, потому что в моем приложении только одна динамическая библиотека) + последняя версия NDK (v16). Код был написан на C ++ 14 и скомпилирован со следующими флагами -fPIC -fno-strict-aliasing -fstack-protector. Тот же код, используемый в приложении для iOS, прекрасно работает, поэтому для меня это выглядит так, будто Android не убивает приложения в фоновом режиме достаточно быстро, чтобы освободить их память, поэтому в этом случае у моего приложения возникают проблемы с OOM, однако интересно, почему эти проблемы не возникают? Это может происходить и на стороне Java (возможно, VM резервирует гораздо больше дополнительной оперативной памяти). Вы видели похожие проблемы? Может быть, вы знаете, как с ними бороться?

КСТАТИ. Иногда стек, предоставляемый отчетами Crashlytics, действительно плохой (только для сбоев в нативном коде, с Java в порядке), я даже получил 2 сбоя, называемых ‘??? — неизвестно ». Я загрузил символы для задачи Crashlytics для Gradle. Вы знаете, как это решить?

Ура,

0

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …