我在Android平台上开发了一个文件解析应用程序。我该如何检查我的应用实际使用了多少内存?我尝试了adb shell cat /proc/meminfo命令,但是这并不能给我我的应用程序使用了多少内存的信息。它只提供有关整体内存的一般信息。一个应用程序通常会使用多少内存?什么是正常或异常的?需要任何帮助,谢谢!
我在Android平台上开发了一个文件解析应用程序。我该如何检查我的应用实际使用了多少内存?我尝试了adb shell cat /proc/meminfo命令,但是这并不能给我我的应用程序使用了多少内存的信息。它只提供有关整体内存的一般信息。一个应用程序通常会使用多少内存?什么是正常或异常的?需要任何帮助,谢谢!
Android应用程序受到一定数量的内存限制。由于这个限制相当(疯狂?)低,我认为您不应该因使用所有内存而感到内疚!
非常老的设备上限制为16 MB,较新的设备上限制为24 MB或32 MB。似乎没有关于不同设备尺寸的信息,也没有人知道为什么现代手机有1-2 GB的RAM时限制如此之小。
http://blog.javia.org/how-to-work-around-androids-24-mb-memory-limit/
https://groups.google.com/forum/?fromgroups=#!topic/android-platform/7zKQlrDcypQ
啊哈,我在限制中找到了一些具体数字:
http://dubroy.com/memory_management_for_android_apps.pdf
G1: 16MB
Droid: 24MB
Nexus One: 32MB
Xoom: 48MB
http://developer.android.com/resources/articles/track-mem.html
要跟踪进程ID的整体内存,您可以在ActivityManager中使用以下两种方法:
获取您应用程序的PID:
List<ActivityManager.RunningAppProcessInfo> getRunningAppProcesses ()
然后是MemoryInfo
MemoryInfo[] getProcessMemoryInfo (int[] pids)
您可以使用以下命令获取您的Android应用程序的内存使用情况: 假设您已经将adb添加到PATH环境变量中:
adb shell dumpsys meminfo com.<your.package>
为了查看正在使用的内存实时更新,您可以尝试
watch "adb shell dumpsys meminfo com.<your.package>"