【问题标题】:App Memory Consumption应用内存消耗
【发布时间】:2018-07-31 14:54:01
【问题描述】:

我一直在优化我的应用程序,我发现对于它应该使用多少内存有一些一般性的想法......我现在在 70-80Mb 之间运行,这是一个疯狂的数字还是只是一个偏重一点?

我的第二个问题是关于我正在使用的内存。大约 42Mb 被图形占用,无论我是使用布局图形运行应用程序还是在不设置任何视图的情况下运行它......关于在哪里查看的任何想法?我觉得这是主题,但我不确定如何测试。

我一直在寻找几天来弄清楚为什么它使用了这么多却无法弄清楚。无论我参加哪项活动,它都保持不变,欢迎提出任何想法!

更新:

  • 我最终在模拟器上运行它,得到了大约 26Mb,超出了我的预期,但它以 70Mb 的速度运行,而实际设备上的图形为 42Mb。
  • 模拟器在获取内存类信息后允许 384Mb 的应用程序,而设备只允许 256Mb...模拟器有更多的存储空间,运行效率更高。
  • 模拟器是 Android 8.1 27api,而设备是 Android 7.0 24api。
  • 也在下面的旧版 Android 5.1.1 api 22 上试用过。

有什么想法吗?

如果您知道答案,我还有一个关于为什么模拟器在性能上有如此差异的问题,但我想将这些问题分开:Other Question

【问题讨论】:

    标签: android performance android-layout


    【解决方案1】:

    Android Studio 有一个很棒的工具,叫做Memory Profiler。它可以帮助您分析可能的内存泄漏并查看哪些调用占用的内存最多。您甚至可以暂停处理器并“放大”以深入了解调用堆栈。

    【讨论】:

    • 我一直在尝试使用它,但还没有完全弄清楚呼叫来自哪里。我会发布几张图片,看看你们是否能看到任何东西,但我一直在寻找如何更好地阅读它的好资源。不过,从我所看到的情况来看,这些调用似乎在许多层面上都递归到了它们自己......
    • 听起来你有内存泄漏。尝试滚动进出以转到更高级别的呼叫,看看它从哪里开始找到罪魁祸首。
    • 是的,我一直在 24api 设备上进行测试,该设备限制了 Android Studio 中的一些新功能(应用程序使用了很多会杀死模拟器的蓝牙功能),但我想我现在可以杀死那些试图找到这个。但这很奇怪,无论运行多长时间,内存都保持不变...... 42.2Mb 几个小时,哈哈
    • 好吧,我发现了一些有趣的东西......运行相同包的模拟器保持在 26Mb 没有图形,而实际设备运行在 68Mb 和 42 Mb 图形,对此有什么想法吗?大声笑
    【解决方案2】:

    您可以使用LeakCanary 一个适用于Android 和Java 的内存泄漏检测库。由 Square 维护。这是用于内存优化和检测泄漏的最佳开发人员工具之一。here

    【讨论】:

    • 我已经玩了一段时间了,LeakCanary 也没有任何结果,太疯狂了!
    • 是的,它很疯狂,但是您可以随时参考官方文档link,也许它可以提供新的想法或触发不同的方式来进行内存优化。
    • 谢谢!我已经看过几次了,肯定可以改进一些事情……更有趣的是,它可以在 0Mb 图形的模拟器上按预期运行……总共在 10-20Mb 之间
    • 我在另一个链接的问题中有一些截图......还没有看到其他人问过它
    猜你喜欢
    • 1970-01-01
    • 2010-10-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-03
    • 2012-11-24
    • 2013-10-08
    相关资源
    最近更新 更多