2013-06-14 6 views
6

का उपयोग कर मेरे एंड्रॉइड एप्लिकेशन लिखित सी ++ के मेमोरी उपयोग को कैसे ढूंढें मैं एनडीके का उपयोग कर एंड्रॉइड में सी ++ में लिखे गए गेम को पोर्ट कर रहा हूं। मुझे यह जानने की जरूरत है कि दौड़ते समय कितनी मेमोरी खपत होती है। मैं सी ++ में लिखे गए एंड्रॉइड एप्लिकेशन के मेमोरी उपयोग को खोजने के लिए प्रोग्रामेटिक तरीके से ढूंढ रहा हूं।एनडीके

+0

एक तरह से 'new' और' delete' ऑपरेटर ओवरराइड और कुछ बहीखाता करना है। – user1095108

उत्तर

6

दो कार्य 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; 
} 
+3

असल में ये जावा विधियां मूल विधियां हैं। Http://androidxref.com/source/xref/frameworks/base/core/jni/android_os_Debug.cpp (cpp-source) के अनुसार आप 'mallinfo()' का उपयोग कर सकते हैं और फिर 'uordblks' (' ' getNativeHeapAllocatedSize() ') और 'usmblks' (' getNativeHeapSize() ') –

+0

@ सुपर-क्वा, टैंक आप बहुत कुछ! – CAMOBAP

0

Debug.getNativeHeapAllocatedSize() और Debug.getNativeHeapSize() वापसी malloc() और संबंधित कार्यों केवल द्वारा किया जाता स्मृति आवंटन के बारे में जानकारी। आप सी ++ से आसानी से /proc/self/statm पार्स कर सकते हैं और VMRSS मीट्रिक प्राप्त कर सकते हैं।

See details here