如何找到内存使用我的android应用程序编写的c++使用NDK

How to find memory usage of my android application written C++ using NDK

本文关键字:c++ NDK 使用 应用程序 android 何找 内存 我的      更新时间:2023-10-16

我正在使用NDK将一款用c++编写的游戏移植到Android上。我需要知道它在运行时消耗了多少内存。我正在寻找编程的方式来找到用c++编写的Android应用程序的内存使用情况。

基于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;
}

在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日

Debug.getNativeHeapAllocatedSize()Debug.getNativeHeapSize()返回malloc()和相关函数执行的内存分配信息。您可以很容易地从c++中解析/proc/self/statm并获得VmRSS度量。

详情请点击此处