2013-06-14 32 views
6

Tôi đang chuyển một trò chơi được viết bằng C++ sang Android bằng NDK. Tôi cần phải biết bao nhiêu bộ nhớ nó tiêu thụ trong khi chạy. Tôi đang tìm cách lập trình để tìm cách sử dụng bộ nhớ của ứng dụng Android được viết bằng C++.Cách tìm bộ nhớ sử dụng ứng dụng Android của tôi được viết C++ bằng NDK

+0

một cách là để ghi đè lên 'new' và' điều hành DELETE' và làm một số sổ sách kế toán. – user1095108

Trả lời

6

Hai chức năng dựa trên câu trả lời JonnyBoy của.

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; 
} 
+3

Trên thực tế, các phương thức java này là các phương thức gốc. Theo http://androidxref.com/source/xref/frameworks/base/core/jni/android_os_Debug.cpp (cpp-source), bạn có thể sử dụng 'mallinfo()' và sau đó đọc các giá trị cho 'uordblks' (' getNativeHeapAllocatedSize() ') và' usmblks' ('getNativeHeapSize()') –

+0

@ super-qua, Tank Bạn rất nhiều! – CAMOBAP

0

Debug.getNativeHeapAllocatedSize()Debug.getNativeHeapSize() lại thông tin về cấp phát bộ nhớ được thực hiện bởi malloc() và có liên quan chức năng chỉ. Bạn có thể dễ dàng phân tích cú pháp /proc/self/statm từ C++ và nhận số liệu VmRSS.

See details here

Các vấn đề liên quan