gpt4 book ai didi

android - Android 应用程序中奇怪的内存行为

转载 作者:行者123 更新时间:2023-11-29 21:50:17 24 4
gpt4 key购买 nike

我正在开发的 Android 应用程序中存在奇怪的内存行为。该应用程序运行良好,但如果我查看 Android 中的“任务管理器”,如三星 SII 任务管理器或 Nexus 7 上的“Memory Usage”应用程序,它表明在使用该应用程序时使用的内存量是迅速增长到一个疯狂的数量,比如数百兆(在 Nexus 7 上为 600~700MB)。然后它可以回落到大约 200MB,再次增长等等。

起初我以为我有严重的内存泄漏,并开始在 Eclipse 内存分析器 (MAT) 中搜索问题,就像此 excellent video 中所解释的那样.但问题是从这里一切看起来都很好。我没有找到任何重复的 Activity 实例或任何其他可能导致泄漏的实例,并且报告的内存使用量要小得多。该问题也不会出现在 GC 消息中。所以我可以在任务管理器中报告 600MB 的使用情况,并在 Logcat 中报告类似这样的内容:

01-29 12:05:44.511: D/dalvikvm(6044): GC_FOR_ALLOC freed 3930K, 24% free 28959K/38096K, paused 17ms, total 17ms

堆容量永远不会超过 50~60MB(这可能是正常的,因为应用程序中有很多图片)。 MAT 中的数字匹配。

我想确定我的应用程序是否存在内存泄漏。即使 GC 消息和 MAT 不报告问题,我也觉得任务管理器报告这么高的内存使用率真的很奇怪。也许这里有人已经遇到过这种奇怪的行为并且可以给我一些线索来了解正在发生的事情?

最佳答案

GC 消息只显示 Dalvik 堆上的内容。 native 堆可以无限增长——直到系统决定杀死你,只要你在前台,它就不愿意这样做。您的应用是否有可能导致分配的 native 组件?

如果这是开发人员/root 设备,“procrank”工具可以为您提供内存使用情况的快速摘要。 “显示 map ”工具可以为您提供更详细的分割。

DDMS 有一些(官方不支持的)工具用于检查 native 内存使用情况。谷歌“ddms native heap”找到一些说明。

关于android - Android 应用程序中奇怪的内存行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14581853/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com