2017-02-03 5 views
0

Я пытаюсь вызвать утечку с помощью этого родного метода из своего приложения. Я вижу, что «Метод вернулся». в моих журналах, но я, похоже, не теряю RAM. Я использую (MemoryInfo.availMem/1048576L) для отслеживания использования.Попытка вызвать собственную утечку

JNIEXPORT jstring JNICALL Java_com_app_native_Wrapper_causeLeak(JNIEnv *je, jclass jc, jint bytes) { 
    char *p_array = calloc(bytes,sizeof(char)); 
    return (*je)->NewStringUTF(je, "Method returned."); 
} 

И пытаясь вызвать утечку 10MB с помощью этого метода:

Wrapper.causeLeak(10 * 1024 * 1024) 

EDIT:

Я делаю это, потому что я хочу, чтобы проверить мое приложение в ситуации с малым количеством памяти.

+0

Хорошо, этого должно быть достаточно, чтобы вызвать утечку. Не знаете, почему вы это делаете или что ваш вопрос. –

+0

Я делаю это, потому что хочу проверить свое приложение в ситуации с низкой памятью. –

+0

Я не уверен, что MemoryInfo.availMem учитывает собственное использование или просто использует кучу Java-кучи. Вы можете посмотреть https://developer.android.com/reference/android/os/Debug.MemoryInfo.html в качестве альтернативного источника информации –

ответ

0

Я не мог заставить это работать, но я нашел кого-то в GitHub, который построил лучший подход. Если кому-то понадобится протестировать утечку памяти, используйте репозиторий здесь: https://github.com/T-Spoon/Android-Developer-Toolbelt