一个典型的安卓应用程序应该使用多少内存?

18

我在Android平台上开发了一个文件解析应用程序。我该如何检查我的应用实际使用了多少内存?我尝试了adb shell cat /proc/meminfo命令,但是这并不能给我我的应用程序使用了多少内存的信息。它只提供有关整体内存的一般信息。一个应用程序通常会使用多少内存?什么是正常或异常的?需要任何帮助,谢谢!


你不必太担心,这对你没有影响,亲爱的。 - Rakshi
5
这里实际上没有回答问题,他们只是告诉你如何监测。什么是很多?什么是太多和可以接受的范围。 - Zapnologica
5个回答

18

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


4
您可以使用DDMS > 分配跟踪器来跟踪应用程序的内存使用和堆分配。

http://developer.android.com/resources/articles/track-mem.html

要跟踪进程ID的整体内存,您可以在ActivityManager中使用以下两种方法:

获取您应用程序的PID:

List<ActivityManager.RunningAppProcessInfo> getRunningAppProcesses ()

然后是MemoryInfo

MemoryInfo[] getProcessMemoryInfo (int[] pids)

使用分配跟踪器帮助我进行调试,我想找到整个应用程序占用的内存。 - Amritha
@Amritha:我认为MAT可以帮助你解决这个问题。 - Ghost
@Ghost,我再次重申,我不想调试或查找对象分配或内存泄漏的位置。在手机上,我只想知道我的应用程序占用了多少内存。就这样。 - Amritha
@Amritha:请参考这个这个。MAT的范围不仅限于查找内存泄漏。很明显,如果您的应用程序没有泄漏,MAT会显示您的应用程序正在使用的总内存。如果这些都无法帮助您,请尝试Google。祝你好运。 - Ghost

1

0

您可以使用以下命令获取您的Android应用程序的内存使用情况: 假设您已经将adb添加到PATH环境变量中:

adb shell dumpsys meminfo com.<your.package>

为了查看正在使用的内存实时更新,您可以尝试

watch "adb shell dumpsys meminfo com.<your.package>"

希望这有所帮助。

0

你可以在应用管理器中检查应用程序的内存使用情况,你可以在链接中检查它。


你的链接似乎已经失效了。 - MyPasswordIsLasercats

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接