Как найти использование памяти моего приложения для Android, написанного на C ++, используя NDK

Я портирую игру, написанную на C ++, на Android, используя NDK. Мне нужно знать, сколько памяти он потребляет во время работы. Я ищу программно способ найти использование памяти приложения Android, написанного на C ++.

 user109510814 июн. 2013 г., 15:26
Одним из способов является переопределениеnew а такжеdelete оператор и сделать некоторые бухгалтерию.

Ответы на вопрос(3)

основанные на JonnyBoyответ.

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;
}
 super-qua08 апр. 2015 г., 11:43
На самом деле эти Java-методы сами являются нативными. В соответствии сandroidxref.com/source/xref/frameworks/base/core/jni/... (cpp-source) вы можете использоватьmallinfo() а затем прочитайте значения для (uordblksgetNativeHeapAllocatedSize()) а также ()usmblksgetNativeHeapSize()
 CAMOBAP19 мая 2015 г., 13:17
@ Супер-Qua, Танк Вы так много!
Решение Вопроса

выделенную / используемую с:

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

Debug.getNativeHeapAllocatedSize() а такжеDebug.getNativeHeapSize() вернуть информацию о распределении памяти, выполненномmalloc() и связанные функциитолько, Вы можете легко разобрать/proc/self/statm из C ++ и получитьVmRSS Метрика.

Подробности здесь

Ваш ответ на вопрос