Przesyłam grę napisaną w C++ na Androida przy użyciu NDK. Muszę wiedzieć, ile pamięci zużywa podczas pracy. Szukam programowo sposobu na wykorzystanie pamięci aplikacji systemu Android napisanej w C++.Jak znaleźć wykorzystanie pamięci mojej aplikacji napisanej w systemie Android C++ za pomocą NDK
Odpowiedz
W Javie można sprawdzić rodzimą pamięć przydzieloną/platformach
Debug.getNativeHeapAllocatedSize()
Debug.getNativeHeapSize()
Patrz:
http://developer.android.com/reference/android/os/Debug.html#getNativeHeapAllocatedSize%28%29
http://developer.android.com/reference/android/os/Debug.html#getNativeHeapSize%28%29
Dwie funkcje w oparciu o odpowiedzi JonnyBoy użytkownika.
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;
}
W rzeczywistości te metody java są metodami natywnymi. Według http://androidxref.com/source/xref/frameworks/base/core/jni/android_os_Debug.cpp (źródło cpp) można użyć 'mallinfo()', a następnie odczytać wartości dla 'uordblks' (' getNativeHeapAllocatedSize() ') i' usmblks' ('getNativeHeapSize()') –
@ super-qua, Tank You you much! – CAMOBAP
Debug.getNativeHeapAllocatedSize()
i Debug.getNativeHeapSize()
zwrot informacji o alokacji pamięci wykonywanych przez malloc()
i powiązanych funkcji tylko. Możesz łatwo przetworzyć /proc/self/statm
z C++ i uzyskać metrykę VmRSS.
- 1. Wykorzystanie biblioteki C w ciągu Android NDK
- 2. Wykorzystanie pamięci aplikacji Xamarin dla systemu Android
- 3. Jak uzyskać wykorzystanie pamięci w systemie Windows w C++
- 4. Dostęp do własnego konta bankowego za pomocą samodzielnie napisanej aplikacji
- 5. Narzędzia do debugowania pamięci dla systemu Android Kod NDK C++
- 6. Przekazywanie ciągu znaków do kodu C w systemie Android NDK
- 7. monitorować wykorzystanie pamięci programu w systemie Linux
- 8. Jak znaleźć wykorzystanie pamięci w aplikacjach WWW w Apache tomcat
- 9. Jak znaleźć pracowników w mojej aplikacji Elixir?
- 10. Jak znaleźć wycieki pamięci za pomocą visualvm
- 11. Debugowanie aplikacji WebView (jonowej) w systemie Android za pomocą logcat
- 12. Jak zoptymalizować natywny kod za pomocą android-ndk (Optymalizacja prędkości)
- 13. Jak uzyskać wykorzystanie pamięci aplikacji, jak pokazano w Menedżerze zadań?
- 14. Kontrolowanie flag kompilatora w systemie Android NDK?
- 15. jak zmniejszyć wykorzystanie pamięci solr?
- 16. C++ 11 std :: async w systemie Android NDK nie działa
- 17. Jak uzyskać wykorzystanie pamięci w Swift
- 18. Android - otwieranie załącznika do Gmaila za pomocą mojej aplikacji
- 19. Jak włączyć eksperymentalny standard "C++ 0X" podczas kompilowania plików .cpp w systemie Android-ndk (r7)?
- 20. Jak analizować wykorzystanie pamięci ze zrzutu pamięci?
- 21. Timer zwiększa wykorzystanie pamięci w C# app
- 22. Debugowanie natywnych aplikacji Android NDK
- 23. Jak znaleźć wyciek pamięci w Java za pomocą JProfiler?
- 24. Android Wstępne instalowanie aplikacji NDK
- 25. Jak zidentyfikować wycieki pamięci w systemie Android?
- 26. Idealne wykorzystanie pamięci dla aplikacji na iOS.
- 27. Jak zmierzyć wykorzystanie danych mojej aplikacji w reakcji natywnej?
- 28. Jak ograniczyć wykorzystanie pamięci aplikacji Java spakowanej w słoiku (-Xmx prawdopodobnie nie działa) w systemie Windows
- 29. Android NDK C++ 'wstring' support
- 30. Android - samouczki dla OpenGL ES 2.0 za pomocą NDK?
jednym ze sposobów jest zastąpić 'new' i' operatora delete' i zrobić kilka księgowości. – user1095108