5

C++ で記述されたゲームを NDK を使用して Android に移植しています。実行中に消費するメモリ量を知る必要があります。C++ で記述された Android アプリケーションのメモリ使用量をプログラムで調べる方法を探しています。

4

3 に答える 3

7

JonnyBoy の回答に基づく 2 つの関数。

static long getNativeHeapAllocatedSize(JNIEnv *env)
{
    jclass clazz = (*env)->FindClass(env, "android/os/Debug");
    if (clazz)
    {
        jmethodID mid = (*env)->GetStaticMethodID(env, clazz, "getNativeHeapAllocatedSize", "()J");
        if (mid)
        {
            return (*env)->CallStaticLongMethod(env, clazz, mid);
        }
    }
    return -1L;
}

static long getNativeHeapSize(JNIEnv *env)
{
    jclass clazz = (*env)->FindClass(env, "android/os/Debug");
    if (clazz)
    {
        jmethodID mid = (*env)->GetStaticMethodID(env, clazz, "getNativeHeapSize", "()J");
        if (mid)
        {
            return (*env)->CallStaticLongMethod(env, clazz, mid);
        }
    }
    return -1L;
}
于 2013-11-19T02:36:46.357 に答える
5

Java では、次の方法で割り当てられた/使用されたネイティブ メモリを確認できます。

Debug.getNativeHeapAllocatedSize()
Debug.getNativeHeapSize()

見る:

http://developer.android.com/reference/android/os/Debug.html#getNativeHeapAllocatedSize%28%29

http://developer.android.com/reference/android/os/Debug.html#getNativeHeapSize%28%29

于 2013-06-14T21:39:58.377 に答える