如何使用DDMS Heap查看Android应用内存情况

如何使用DDMS Heap查看Android应用内存情况,第1张

Android默认情况下分配给一个应用程序内存大小是16M,这对于涉及到大量或者后台的应用程序来说,有点吃力,一个不小心,就会出现OOM的问题,所以,要对应用程序运行过程中的内存使用情况进行测试。

可以使用Eclipse DDMS的Heap进行测试。

首先,我们在DDMS的界面的设备选项中找到手机设备,可以看到它里面正在运行的进程:

点一下“Update Heap"图标,然后在Heap选项中查看我们标注的进程的内存使用情况:

点一下"Cause GC", 相当于向虚拟机执行一次GC请求,然后无需再按就可以动态的查看该应用程序的内存使用情况。

最值得关注的就是”data object“的"Total Size",它决定了是否存在内存泄露的危险。一般情况下,它都是固定在一个稳定的数值范围,如果回落非常大,或者该数值非常大,像是355后就会被kill掉,说明该应用程序的内存使用情况不佳,代码结构需要优化。

解决办法:

1 修改dalvik/vm/Initc:

static void setCommandLineDefaults()

TODO: base these on a system or application-specific default

/

gDvmheapSizeStart = 2 1024 1024; // Spec says 16MB; too big for us

- gDvmheapSizeMax = 16 1024 1024; // Spec says 75% physical mem

+ gDvmheapSizeMax = 32 1024 1024; // Spec says 75% physical mem

gDvmstackSize = kDefaultStackSize;

2 修改frameworks/base/core/jni/AndroidRuntimecpp:

int AndroidRuntime::startVm(JavaVM pJavaVM, JNIEnv pEnv)

//options[curOpt++]optionString = "-verbose:class";

strcpy(heapsizeOptsBuf, "-Xmx");

- property_get("dalvikvmheapsize", heapsizeOptsBuf+4, "16m");

+ property_get("dalvikvmheapsize", heapsizeOptsBuf+4, "32m");

//LOGI("Heap size: %s", heapsizeOptsBuf);

optoptionString = heapsizeOptsBuf;

mOptionsadd(opt);

在Android中,一个Process 只能使用16M内存,如果超过了这个限制就会抛出Android Out Of Memory(OOM) 这个异常。 在Android中: 1一个进程的内存可以由2个部分组成:java 使用内存 ,C 使用内存 ,这两个内存的和必须小于16M,不然就会出现OOM

以上就是关于如何使用DDMS Heap查看Android应用内存情况全部的内容,包括:如何使用DDMS Heap查看Android应用内存情况、如何修改Android应用程序能够使用的默认最大内存值、一个android应用在内存中占用多少内存等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/9277588.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-26
下一篇 2023-04-26

发表评论

登录后才能评论

评论列表(0条)

保存