【问题标题】:How to detect and solve android application performance issues?如何检测和解决android应用程序性能问题?
【发布时间】:2021-07-10 10:52:41
【问题描述】:

我试图弄清楚为什么当用户在活动之间切换和创建对话框时我的应用程序会卡顿。

我转储我的应用程序性能,以便使用 Profiler 检测异常并使用该应用程序一段时间。

与其他对象相比,我设法检测到的唯一异常是位图的“Native Size”数量相对庞大:

但我真的不知道它是否异常,如果是,如何排查和解决。

该应用程序非常大,所以我认为最好共享整个 repo 以便您能够查看代码:

https://github.com/steingolditay/ezBalans

【问题讨论】:

  • ...代码在哪里?我们如何在没有看到任何代码行的情况下评论或注意到您的错误?看来你创建了很多位图,所以从那里开始......
  • 我不知道在这种情况下代码的哪一部分是相关的,因为我不知道问题的原因是什么以及在哪里。你能指导我什么会有帮助吗?
  • 内存中分配了近 180k 位图,所以我认为您可以使用一些位图或图像方法从加载它们的位置开始......但是如果没有看到代码就很难更精确.

标签: android performance memory-leaks android-bitmap android-profiler


【解决方案1】:

如果发现,请打开您认为滞后的活动并在 logcat 过滤器 byword Choreographer

跳过了 60 帧!

在 logcat 中,这意味着应用程序可能在其主线程上做了太多工作。

然后您可以针对该活动优化您的调用和处理

【讨论】:

  • 我玩了整个应用程序(主要由 3 个活动和一些片段组成),我只得到了 3 个 Choreographer 日志,都跳过了 60 帧以下,尽管我看到应用程序 ui 实时卡顿。
  • 它不应该跳过任何导致 UI 卡顿的帧
  • 只是为了强调......当我在屏幕上移动大约 20-30 秒时,应用程序只跳帧 3 次。即使没有跳过任何帧,用户界面也会卡顿。
【解决方案2】:
  1. 我注意到在您的内存屏幕截图中,内存分析器检测到了四个泄漏。您是否尝试点击标签查看它们是什么?
  2. 要调试丢失的帧,请使用 CPU 分析器记录系统跟踪。见https://developer.android.com/studio/profile/cpu-profiler#frame-render。一旦找到红色帧(长于 60 Hz 阈值),请查看您的渲染/UI 线程以查找可能导致瓶颈的长时间运行的跟踪事件。这个video 可能会有所帮助。

【讨论】:

    猜你喜欢
    • 2011-12-18
    • 2014-04-29
    • 2011-03-27
    • 1970-01-01
    • 2010-10-09
    • 2011-04-26
    • 1970-01-01
    • 1970-01-01
    • 2012-11-29
    相关资源
    最近更新 更多