2017-02-03 3 views
0

私のアプリケーションからこのネイティブメソッドを使用してリークを引き起こそうとしています。私は "Method returned"を見ることができます。私のログでは、私は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."); 
} 

そして、この方法で10メガバイトのリークが発生しようとしている:

Wrapper.causeLeak(10 * 1024 * 1024) 

編集:私はメモリ不足の状況で私のアプリをテストするため

が、私はこれをやっています。

+0

OK、リークを引き起こすのに十分です。なぜこれをやっているのか、あなたの質問が何であるかはわかりません。 –

+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

関連する問題