首页 > 解决方案 > 带有单个 WebView 的 Android Studio 简单“电视”应用程序在长时间后崩溃(分析器显示负分配的内存?)

问题描述

所以我有一个超级简单的应用程序,它只有一个连接到我们的主机页面并充当“电视”的 WebView。在检查内存泄漏后,我在我的 Amazon Fire Stick 上运行了这个应用程序很长一段时间,但无论在大约 8-9 小时后,它都会在控制台上无一例外地崩溃。我如何检查内存泄漏:

  1. LeakCanary 没有检测到任何泄漏。
  2. 随着时间的推移观察内存分析器,我发现使用的总内存始终平均为 400MB,即使在 8 小时标记时也是如此。
  3. 与更糟糕的旧版本程序相比(它有很多不相关的代码并且是一个较旧的项目),LeakCanary DID 检测到完全相同代码的泄漏,并且分析器确实慢慢增加了使用的总内存。这使我相信,隔离所有必要的代码并将其移至新项目可以解决部分问题。

现在,真正奇怪的是,即使分析器中的分配内存波动,它也在减少。实际上是负数。到 8 小时大关时,我看到它的平均值约为 -40000。为什么分配的数字是负数?

最后,这是我在崩溃前看到的反复出现的可疑控制台日志,暗示它确实是与内存相关的崩溃:

I/Kernel: [126985.795618].(0)[3041:RenderThread]lowmemorykiller: Killing 'VMetricsProcess' (29681), adj 1, score_adj 58,
    [126985.795618]   to free 20124kB on behalf of 'RenderThread' (3041) because
    [126985.795618]   cache 40244kB is below limit 40960kB for oom_score_adj 58
    [126985.795618]   Free memory is 0kB above reserved

任何帮助将不胜感激,因为我长期以来一直在努力解决这个错误。

标签: androidandroid-studiomemorywebviewout-of-memory

解决方案


推荐阅读