gpt4 book ai didi

java - DDMS 报告不正确的内存使用情况?

转载 作者:行者123 更新时间:2023-11-30 10:51:40 25 4
gpt4 key购买 nike

我目前正在调查我们的一个 Android 应用程序是否存在内存泄漏,我发现了一些让我完全困惑的事情。

DDMS 堆监视器报告应用程序正在使用 13mb/20mb 堆内存,但直接从设备中提取的报告报告应用程序正在使用近 700mb!

这是设备的问题吗? DDMS错了吗?我如何找出这 700mb 中的内容?

enter image description here enter image description here

最佳答案

It is part of the system software

第一个屏幕截图是 adb shell dumpsys meminfo 的输出。第二张截图看起来像是来自 procrank,它不是标准 Android 的一部分;至少,我无法在 Android 6.0 上快速找到它。

(以后有人问你‘这个“报告”到底是什么’的时候,随便举出实际命令)

Is this an issue with the device?

可能不是,虽然这很难说,因为我们不知道设备是什么,应用程序是什么,或者除了两张数码相机照片之外的任何东西。

Is DDMS wrong?

可能不会。 Java 代码,无论是在 Dalvik 还是 ART 中运行,都有一个堆限制,而且会远低于 700MB。

How do I find out what is going into that 700mb?

最有可能的是,其中约 600MB 将来自 native 代码(NDK 库)。

因此,首先找出您应用中的哪些内容使用了 native 代码。这可能是您的代码,也可能来自第三方库(例如 Fresco)。您的选择是:

  • 在这些库中调用(或实现)逻辑来限制它们使用的堆空间量,或者

  • 摆脱它们,或者

  • 看看是否有办法将 Valgrind 或其他东西连接到 NDK 代码,以确定这些库在哪里以及如何使用这么多系统 RAM

关于java - DDMS 报告不正确的内存使用情况?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34615127/

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