Как отслеживать утечку памяти в JNI с помощью Android Studio Profiler или другихAndroid

Форум для тех, кто программирует под Android
Ответить
Anonymous
 Как отслеживать утечку памяти в JNI с помощью Android Studio Profiler или других

Сообщение Anonymous »


Я хочу знать, как отслеживать утечки памяти в JNI с помощью Android Profiler. У меня есть приложение, использующее NDK, и в нем есть утечки памяти в JNI. Я проверил это в Profiler.

JNIEXPORT jfloat JNICALL FACE_ENGINE_METHOD(nativeExtractLiveFeature)(JNIEnv *env, экземпляр задания, jobject bmp, jint влево, jint вверху, jint вправо, jint внизу, ориентиры jfloatArrayX, ориентиры jfloatArrayY, функции jfloatArray) { резюме::Mat matBGR; ConvertBitmap2Mat (окр., bmp, matBGR); if( matBGR.empty() || matBGR.cols == 0 || matBGR.rows == 0) вернуть 0,0f; LOG_DEBUG("Размер кадра = (%d, %d)", matBGR.cols, matBGR.rows); LOG_DEBUG("Face Rect = (%d, %d, %d, %d)", слева, сверху, справа, снизу); cv::Rect rtFace; rtFace.x = max(0, слева); rtFace.y = max(0, верх); rtFace.width = min(matBGR.cols, справа) - rtFace.x; rtFace.height = min(matBGR.rows, дно) - rtFace.y; Live *pLive = Live::getInstance(); доверие с плавающей запятой = pLive->Detect(matBGR, rtFace); LOG_DEBUG("Face Live Conf = %f", уверенность); плавать posLMX[5]; плавать posLMY[5]; jfloat* tmpLandX = env->GetFloatArrayElements(landmarksX, NULL); jfloat* tmpLandY = env->GetFloatArrayElements(landmarksY, NULL); for(int я = 0; я GetFeatures(matBGR, posLMX, posLMY, feat); LOG_DEBUG("Извлечение функции завершено"); матBGR.выпуск(); env->SetFloatArrayRegion(features, 0, 128, (jfloat*)feat); env->ReleaseFloatArrayElements(landmarksX, tmpLandX, 0); env->ReleaseFloatArrayElements(landmarksY, tmpLandY, 0); вернуть доверие; } Приложение неоднократно вызывает эту функцию JNI, что приводит к утечкам памяти. Мне нужно найти решение с помощью Android Profiler.
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Android»