在某些平板电脑上,内存开始运行不足,Android开始通过查杀我们的应用程序,然后由我们的看门狗服务自动重启.
以下是我们用于监控每个应用内存使用情况的代码:
for( RunningAppProcessInfo info : am.getRunningAppProcesses() ) {
int memused = am.getProcessMemoryInfo(
new int[]{info.pid})[0].getTotalPss();
Log.log(DIAG_INFO,"Process Mem: " + info.processName,memused);
}
MemoryInfo mi = new MemoryInfo();
am.getMemoryInfo(mi);
long availableMegs = mi.availMem / 1048576L;
long threshold = mi.threshold /1048576L;
availableMegs下降到接近阈值(在我们的例子中为64mb)并且android开始杀死东西.
但是,当我们查看每个进程的内存使用情况时,将TotalPss值相加,我们得到正常的总数.没有任何过程失控记忆!
缺少RAM的任何想法?
最佳答案
您是否使用过Eclipse Memory Analyzer(MAT)等外部工具?它可能会为您提供比应用内测量更好的视角.它并不难使用,但确实需要一些设置.其使用量为Here’s a pretty good write-up.
在Eclipse System information视图中,可以在设备上的所有应用程序中报告内存的解决方案.要使用它,请打开DDMS透视图,然后在“设备”视图中选择一个设备.然后打开“系统信息”视图,并在左侧下拉列表中选择“内存使用情况”.每次单击“从设备更新”时,您都可以获得设备上使用的内存快照.
原文地址:https://www.jb51.cc/android/431057.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。